Skip to content
Upstream contributor rclone.org

rclone speaks dosya, natively.

The dosya backend ships inside rclone. Run rclone config, pick dosya, and connect your cloud storage for copies, syncs, mounts and share links. No extra plugin to install.

Choose your connection

Connect natively. Keep your familiar commands.

Start with the native Dosya backend. Connect with an API key to copy files, move them within your workspace, create share links and check your quota. The S3 gateway covers older rclone builds and existing S3 workflows.

Recommended

Connect with the Dosya backend

Pick dosya in rclone config. Create a dedicated key in API keys, scoped to your workspace with upload, list and download access.

# check your rclone version and available backends
rclone version
rclone help backends

# interactive setup: enter the key at the prompt
rclone config
name> dosya
Storage> dosya
api_key> dos_YOUR_API_KEY
workspace_id> ws_YOUR_WORKSPACE_ID

# list inside the configured workspace
rclone lsf dosya:

If the key reaches exactly one workspace, leave workspace_id blank. Native paths start inside that workspace: dosya:Photos. The S3 equivalent is dosya-s3:ws_YOUR_WORKSPACE_ID/Photos.

  • move and copy server-side, with no re-upload
  • link generates a real share link, with optional expiry
  • about reports your plan quota, used and free
  • mkdir keeps empty directories without S3 directory markers
S3 fallback

Or connect through S3

Open S3 setup in the app for the access key ID, secret and workspace ID. Use a credential that can upload, list and download for this walkthrough.

# find your configuration file with: rclone config file
# add this section there; replace credentials privately in your editor
[dosya-s3]
type = s3
provider = Other
access_key_id = YOUR_S3_ACCESS_KEY_ID
secret_access_key = YOUR_S3_SECRET_KEY
endpoint = https://api.dosya.dev/s3
region = us-east-1
force_path_style = true
sign_accept_encoding = false
upload_cutoff = 64Mi
chunk_size = 8Mi

Save the config, then list your workspace in a terminal:

rclone lsf dosya-s3:ws_YOUR_WORKSPACE_ID/

Keep the configuration file private. S3 credentials are a pair; a native dos_ API key is not a replacement for that pair. sign_accept_encoding=false prevents a signature mismatch when the gateway rewrites that header.

Need WebDAV?

Choose WebDAV when your client requires it. A normal upload uses one HTTP request. For large files that should remain single files in the app, use native Dosya uploads or S3 multipart. Mounting storage does not create an independent backup.

Your first transfer

Copy a sample. Read it back. Compare it.

Create a local rclone-test folder with a few small, non-sensitive files. Use the native dosya: remote configured above and choose a new, unique destination folder. copy leaves extra destination files in place, but can replace files with the same name.

# use a small source folder and a NEW destination folder for this check
rclone copy ./rclone-test dosya:rclone-test-UNIQUE/ --dry-run

# review the preview, then upload
rclone copy ./rclone-test dosya:rclone-test-UNIQUE/ --transfers 2 --progress

# read back and compare content without changing either side
rclone check ./rclone-test dosya:rclone-test-UNIQUE/ --one-way --download

Check that the final command reports no differences and exits successfully. --one-way checks that every source file is present; it ignores additional destination files. --download reads content for comparison and uses download allowance. See the rclone check reference.

Try the same commands locally first

Local demonstration. This uses two temporary folders on your computer. It demonstrates copying and content comparison without connecting to Dosya.

# macOS / Linux shell; creates a fresh disposable directory
rclone_demo_dir=$(mktemp -d)
mkdir "$rclone_demo_dir/source"
printf 'Dosya rclone sample\n' > "$rclone_demo_dir/source/sample.txt"
rclone copy "$rclone_demo_dir/source" "$rclone_demo_dir/destination" --dry-run
rclone copy "$rclone_demo_dir/source" "$rclone_demo_dir/destination"
rclone check "$rclone_demo_dir/source" "$rclone_demo_dir/destination" --one-way --download

A successful comparison reports zero differences. Keep the same command order when you switch to your configured remote.

Before you schedule a sync

sync can delete destination files. Preview it with --dry-run, check the source is mounted and populated, and keep an independent backup before enabling a recurring job. A successful listing alone does not prove upload or download access.

Video, RAW photos and archives

Upload in parts. Keep one usable file.

The native Dosya backend uploads large files in parts using the upload layout returned by Dosya. The completed upload is one file that the app can open and share; you do not need a chunker overlay.

Using S3 instead? The fallback setup switches to multipart uploads above 64 MiB, below the gateway's 100 MB single-request ceiling. It starts with 8 MiB parts; rclone may increase part size for very large objects. Keep individual requests below the gateway ceiling. Workspace storage and credential limits still apply.

S3 multipart also produces a single file. A WebDAV chunker overlay instead stores a set of parts that needs the overlay to reconstruct the original.

Start with --transfers 2 and increase only if your connection and limits allow it. Multipart upload does not guarantee that an interrupted process can resume its previous session. For a full content check of an archive, budget the time and download allowance for check --download.

See Dosya S3 settings, rclone multipart uploads and Fair Use limits.

The whole picture

Every operation, native and otherwise.

Server-side copy applies to compatible paths in the same workspace; cross-provider transfers pass through the machine running rclone. S3 empty directories need directory_markers=true.

Operation Native dosya backend S3 gateway
Works on both
copy · sync Yes Yes Multipart uploads
mount Yes Yes via FUSE
ls · lsd · lsl Yes Yes
empty directories Yes Requires directory markers
delete · purge Yes Yes
size Yes Yes
How the backends differ
move Server-side Server-side copy, then delete
copy within the same workspace Server-side Server-side object copy
tree Directory listing Walks every key
link Dosya share link Presigned object URL
about Plan quota, used and free Not available

Recipes

Copy, mount, migrate and share.

These examples use the native dosya: remote above. For a mount, install the OS-specific prerequisites and allow local disk space for the write cache.

# native paths start inside the configured workspace
rclone copy ~/Documents dosya:Documents --dry-run

# after reviewing the preview, copy without deleting extra destination files
rclone copy ~/Documents dosya:Documents --transfers 2 --progress
rclone check ~/Documents dosya:Documents --one-way --download

Reference

Every option, and how the backend behaves.

For the native Dosya backend. The API key is required; select a workspace ID when the key can access several. Compare your build with the upstream reference if its options differ.

Options

Flag Config key Environment Default
--dosya-api-key api_key RCLONE_DOSYA_API_KEY required
Your API key. Starts with dos_.
--dosya-workspace-id workspace_id RCLONE_DOSYA_WORKSPACE_ID auto when one is accessible
Choose a ws_ ID if the key can reach several workspaces; otherwise the backend selects the only accessible workspace.
--dosya-api-urlAdvanced api_url RCLONE_DOSYA_API_URL https://api.dosya.dev
API base URL. Leave it unless you are told otherwise.
--dosya-upload-concurrencyAdvanced upload_concurrency RCLONE_DOSYA_UPLOAD_CONCURRENCY 4
Parts of one file uploaded at once. The first part always goes alone, because the server creates the upload when it receives it. Each part in flight is held in memory.
--dosya-encodingAdvanced encoding RCLONE_DOSYA_ENCODING Slash, LtGt, DoubleQuote, SingleQuote, BackSlash, Del, Ctl, LeftSpace, RightSpace, InvalidUtf8, Dot
How filenames are encoded. See the encoding section of rclone's overview.
--dosya-descriptionAdvanced description RCLONE_DOSYA_DESCRIPTION none
A description of the remote, for your own reference.

Your key and workspace

  1. API key: open API keys, create a workspace-restricted key and enter it at the configuration prompt.
  2. Workspace ID: copy the Bucket value from S3 setup. For native setup, you can leave it blank if the key reaches one workspace.

One native remote reaches one workspace. For several, create separate remotes with appropriately scoped keys:

# create separate native remotes with interactive rclone config
# work: points to the work workspace; personal: to the personal workspace
rclone copy work:docs/ personal:backup/ --dry-run

Times and hashes

Modification times are kept to the second and travel with the upload, so a synced file keeps its original timestamp. Changing a time afterwards means re-uploading.

Files uploaded in one shot carry a SHA-256, so rclone check and hash-based sync work without downloading. Native multipart files report no whole-file hash. A normal rclone check can therefore fall back to size alone; use --download for content verification.

Names are case-sensitive and empty directories are kept. Uploading the same filename updates that file rather than creating a duplicate name.

Filenames

On top of rclone's default set, five characters are replaced with full-width equivalents on the way in and restored on the way out:

CharacterValueBecomes
"0x22"
'0x27'
<0x3C<
>0x3E>
\0x5C\

Invalid UTF-8 is replaced as well, since it cannot travel in JSON.

Scripts and CI

Every option has an environment variable, so a pipeline needs no config file at all: inject the API key through your secret store and set the workspace ID explicitly for the job. Address the remote as :dosya:.

# inject RCLONE_DOSYA_API_KEY from your CI secret store
# set RCLONE_DOSYA_WORKSPACE_ID to the chosen workspace
rclone copy ./dist :dosya:releases/ --dry-run

# after reviewing the preview
rclone copy ./dist :dosya:releases/ --transfers 2

The current upstream native backend lists directories individually; it does not implement ListR. Adding --fast-list does not give it a single-pass recursive listing.

Before you point a big job at it

Limits, stated plainly.

These protocol rate limits apply to S3 and WebDAV. Native rclone uses the REST API and its applicable limits. There are no egress fees, but download allowances and credential restrictions still apply.

600 requests a minute, per user, over S3 and WebDAV
1200 requests a minute, per IP
46 regions across 6 continents, locked per workspace
$0 egress, on every plan including free

On the Free plan

WebDAV and S3 skip plan request and concurrency ceilings. Explicit key or role restrictions and abuse rate limits still apply, so tune concurrency to your connection and any rate-limit responses. Lower concurrency does not bypass a daily egress limit.

100 GiB daily credential egress fallback; check your active plan and key limits

See Fair Use for the distinction between share-link downloads and API or protocol allowances.

When something fails

  • 401 Unauthorized The key is wrong, revoked, or belongs to another account. rclone will not retry this one - check the key, then the workspace ID.
  • 429 Too Many Requests You are over the request rate. rclone backs off and retries on its own; on Free, lower --transfers and --checkers rather than waiting it out.
  • concurrent_upload_limit Every upload slot in the workspace is busy. rclone waits for one to free up, retrying every 5 seconds for up to 10 minutes, so this is a delay and not a failure unless it lasts that long.
  • Upload refused for size A 0-byte file, or a file over the workspace's per-file cap if the admin set one. Neither is retried.
  • 500 to 504 A transient server error. rclone retries these automatically; a run that still fails has hit something that needs reporting.

What the backend will not do

  • Filenames up to 255 characters.
  • Empty files cannot be uploaded. A 0-byte file is rejected.
  • Streaming uploads of unknown size are not supported. The size has to be known before the upload starts.
  • Upload slots are limited per user, 5 in flight by default and configurable per workspace. With --transfers above that, rclone waits for a free slot rather than failing, retrying every 5 seconds for up to 10 minutes.
  • Deleting requests permanent deletion. Do not rely on workspace trash to recover a file removed by rclone.

Open source

Open source carried us here. We give back what we can.

A small team can build something like dosya only because thousands of people gave their work away first. rclone is one of them: maintained for a decade, handed to everyone, asking nothing in return. We would rather add to that than quietly live off it.

So we give what we have. The backend we wrote went upstream and now ships inside rclone itself, free for everyone - our users, their users, and people who will never pay us anything. Our apps and packages are published so you can read exactly what runs on your files. Our SDKs are MIT, so you can build on them without asking us first.

And we sponsor the project. That is us supporting rclone, not rclone endorsing us.

Frequently asked questions

Before the first big transfer.

Why can’t I find Dosya in rclone config?

Your installed rclone may predate native Dosya support. Update to the latest official release and check that rclone help backends lists dosya. If you need to stay on an older build, use the S3 gateway setup on this page.

Should I use S3, native Dosya or WebDAV?

Native Dosya is the recommended setup for workspace-aware operations, public share links and quota reporting. S3 works with older rclone builds and existing S3 workflows. WebDAV fits clients that require that protocol; use S3 multipart or native uploads for large files.

Why does my upload fail near 100 MB?

A single request through the gateway is subject to the 100 MB edge ceiling, and client or workspace restrictions can be lower. This S3 configuration switches to multipart above 64 MiB. A WebDAV PUT remains one request; adding a chunker changes how the stored files are represented.

Does rclone check prove that a large file matches?

A normal check can fall back to size when both sides have no common hash. Add --download to compare content by reading the files. It consumes bandwidth and download allowance, so start with a small sample and budget larger checks.

Is sync a backup?

sync makes the destination match the source and can delete destination files. Use copy for the first transfer, preview changes with --dry-run, and keep an independent backup. copy can still replace a destination file with the same name.

Why am I getting SignatureDoesNotMatch or AccessDenied?

For S3, use the S3 access key ID and secret, the /s3 endpoint, path-style addressing and sign_accept_encoding=false. Check workspace access and credential scope. Upload-only keys cannot list or read files for verification.

Can I mount Dosya on Linux, macOS or Windows?

rclone mount can use the native Dosya remote or the S3 gateway. Follow rclone's installation and mount documentation for your OS prerequisites. A mount accesses remote storage; it is not an independent backup or a promise that every file is available offline.

Get a key and point rclone at it.

Free plan includes 5 GB and every protocol. No card, no egress fees.