Skip to Content
Rclone

Rclone

Cloud storage sync and mount — Dropbox, Google Drive, or Uloz.to with optional encryption


Overview

Rclone is a command-line program for syncing files and directories between local storage and cloud providers. QuickBox installs it per user and builds a working directory that includes a cache folder, links to the cloud mounts, and scheduled upload scripts.

Rclone is not a media server or download client — it focuses on syncing, mounting, and optionally encrypting storage paths.

Key features

Three providers

Install with --dropbox, --gdrive, or --uloz. QuickBox creates the remote and builds the Media tree.

Optional encryption

Add --encrypted to create a crypt remote with a separate encryption password and salt.

Managed mounts

Systemd unit rclone@username mounts the remote as root in a root-owned folder outside your home, with a mergerfs overlay (gmedia, dmedia, or umedia) linked into /home/username/rclone.

Scheduled uploads

A nightly cron entry runs move.sh at 03:12 server time and writes results to move.log.

When to use it

Prerequisites

  • You need a per-user cloud mount (Dropbox, Google Drive, or Uloz.to) managed by QuickBox.
  • You have OAuth app credentials ready (Client ID + Client Secret) or Uloz.to account details.
  • You want optional server-side encryption with rclone crypt.
  • You prefer uploads handled by systemd and cron rather than custom scripts.

What you get

  • Install via the dashboard (recommended) — provider, credentials, and encryption in one dialog.
  • Or use the CLI: qb install rclone --dropbox -u username.
  • /home/username/rclone holds the cache folder plus links to the cloud mount and the mergerfs view.
  • Eight per-user control operations are available after install via qb user rclone.

Installation

Install from the Dashboard

Open App Dashboard → Package Management (/dashboard?mode=packages), find rclone in the catalog (browse the File Management category or search), and click Install. The install dialog handles everything in the browser — no manual token copying:

  1. Select your Cloud Provider:
    • Dropbox — OAuth-based. Enter your App Key (Client ID) and App Secret (Client Secret), then click Authorize Dropbox. Your browser navigates to Dropbox’s consent page; after you approve, the dashboard redirects back and shows Authorized ✓. See Creating OAuth apps below.
    • Google Drive — Same OAuth flow. Enter Client ID and Client Secret, click Authorize Google Drive. See Creating OAuth apps below.
    • Uloz.to — Direct credentials (no OAuth). Enter your Uloz.to username, account password, and app token. See Generating a Uloz.to app token below.
  2. Pick the release channel — Stable (default) or Beta.
  3. Toggle Encrypt remote contents if you want server-side encryption. When enabled, enter an encryption password and a separate salt (both must be remembered — there is no recovery).
  4. Click Install. The dashboard streams progress and rclone appears in your service control panel when complete.

Reinstall and Remove are in the same Package Management panel. To update, use the amber Update badge on the rclone row in the App Dashboard. What you see is gated by your account: admins manage any user’s apps; regular users manage their own. See App Management for the full flow and Channels & Versions for how Stable/Beta resolve.

OAuth is a full-page redirect
Info

When you click Authorize, your browser navigates away from the dashboard to the provider’s consent page — this is not a popup. After you grant access, the provider sends your browser back to the dashboard automatically and the “Authorized ✓” badge appears. Only then does the Install button become active. You must register the dashboard’s callback URL in your OAuth app first — see Creating OAuth apps.

Install from the CLI (automation)

The CLI runs the same scripts as the Dashboard and is suited to automation and scripting. The flag-driven form passes credentials non-interactively and is what the dashboard uses internally:

bash
# Google Drive (flag-driven, non-interactive)
qb install rclone --gdrive \
  --client-id <client_id> --client-secret <client_secret> \
  --token '{"access_token":"...","refresh_token":"...","token_type":"Bearer","expiry":"..."}' \
  -u username
 
# Dropbox
qb install rclone --dropbox \
  --client-id <app_key> --client-secret <app_secret> --token '...' -u username
 
# Uloz.to (direct credentials)
qb install rclone --uloz \
  --uloz-user <username> --uloz-pass <password> --uloz-app-token <token> -u username
 
# Add encryption to any provider
qb install rclone --dropbox ... --encrypted --enc-pass <pass> --salt-pass <salt> -u username
 
# Beta channel (install or update)
qb install rclone --dropbox --beta -u username
qb update rclone --beta -u username
 
# Lifecycle
qb reinstall rclone -u username
qb remove rclone -u username

Install flags

OptionDescription
-u, --usernameRequired

Target QuickBox username (required).

--dropbox

Install with Dropbox as the cloud provider.

--gdrive

Install with Google Drive as the cloud provider.

--uloz

Install with Uloz.to as the cloud provider (direct credentials, no OAuth).

--client-id

OAuth App Key / Client ID (Dropbox or Google Drive only). Non-interactive install.

--client-secret

OAuth App Secret / Client Secret (Dropbox or Google Drive only). Non-interactive install.

--token

Pre-authorized OAuth token JSON blob. When present, QuickBox writes it directly to rclone.conf and skips the interactive rclone config reconnect step.

--uloz-user

Uloz.to account username.

--uloz-pass

Uloz.to account password. Stored obscured in rclone.conf.

--uloz-app-token

Uloz.to app token (separate from account password). Generate at https://uloz.to/in-settings.

--encrypted

Create a crypt remote over the provider remote. Requires --enc-pass and --salt-pass.

--enc-pass

Encryption password for the crypt remote. Only valid with --encrypted.

--salt-pass

Encryption salt for the crypt remote. Only valid with --encrypted.

--beta

Install or update from the beta release channel.

Full flag reference: CLI Reference.

Headless servers — use the Dashboard install
Note

For Dropbox and Google Drive on servers with no attached browser session, the Dashboard install path is recommended. The CLI’s interactive fallback uses rclone config reconnect which needs to open a browser to complete OAuth — that does not work over plain SSH. Either use the Dashboard install dialog (it runs OAuth in your local browser and passes the token back automatically), or pre-generate a --token JSON blob and pass it on the CLI command line as shown above.


Creating OAuth apps

Dropbox and Google Drive require you to create a developer app to get your Client ID and Client Secret. This is a one-time setup per QuickBox installation.

Register the redirect URI before authorizing
Warning

The redirect URI must be registered in your OAuth app settings before you click Authorize in the QuickBox dashboard. If the URI is missing or mistyped, the provider will reject the redirect with an error and the install will not complete.

Dropbox

  1. Go to https://www.dropbox.com/developers/apps  and click Create app.

  2. Choose Scoped access, then Full Dropbox access. Give the app a unique name — Dropbox app names are globally unique across the entire Dropbox platform, so common names like rclone are already taken. Use something like QuickBox-rclone-yourname.

  3. On the app’s Settings tab, find OAuth 2 → Redirect URIs and add:

    https://<your-dashboard-domain>/api/packages/rclone/oauth/dropbox/callback

    Replace <your-dashboard-domain> with the actual domain your QuickBox dashboard is reachable at — the same domain you open in your browser to access the dashboard.

  4. Open the Permissions tab on the same app settings page and enable the following scopes (these are what rclone needs to read/write files and metadata):

    • account_info.read
    • files.metadata.write
    • files.content.write
    • files.content.read
    • sharing.write

    Click Submit at the bottom of the Permissions tab. Without these scopes enabled, rclone will fail with permission errors when you try to upload or list files even though the OAuth handshake completes successfully.

  5. Copy the App key (this is your client_id) and App secret (this is your client_secret) from the Settings tab.

  6. Paste both values into the dashboard install dialog, then click Authorize Dropbox.

Google Drive

  1. Go to https://console.cloud.google.com/apis/credentials  — create or select a project for your QuickBox install.
  2. Enable the Google Drive API first. Navigate to APIs & Services → Library, search for Google Drive API, and click Enable. Without this step the OAuth handshake will succeed but every rclone API call returns a 403.
  3. Configure the OAuth consent screen at APIs & Services → OAuth consent screen:
    • User type: Select External for most QuickBox installs (any Google account can authorize). Choose Internal only if you are a Google Workspace admin and want to restrict the app to users in your own organization.
    • App information: Provide an app name (e.g., QuickBox-rclone), a User support email, and Developer contact information. These values appear on the consent screen users see during authorize.
    • Scopes: Click Add or Remove Scopes and add the three scopes rclone uses:
      • https://www.googleapis.com/auth/docs
      • https://www.googleapis.com/auth/drive
      • https://www.googleapis.com/auth/drive.metadata.readonly
    • Publishing status — choose one path BEFORE you connect:
      • Option A — Publish to production (recommended for QuickBox installs). Click Publish app. Google will warn that the auth/drive scope is “sensitive” and may require verification — for a private personal-use install you can ignore the verification request. Your refresh tokens will not expire and rclone will work indefinitely. The trade-off is that during authorize the user sees an “unverified app” warning screen — proceed via Advanced → Go to (your-app-name) (unsafe).
      • Option B — Keep in Testing mode. Add yourself (and any other authorized users) under Test users. No unverified-app warning during authorize, BUT every grant expires after 7 days, after which you must run qb user rclone -o reauth -u username (or click Re-authorize on the dashboard control card).
  4. Create the OAuth client at APIs & Services → Credentials → Create Credentials → OAuth client ID:
    • Application type: Select Web application (NOT Desktop — rclone.org’s general docs mention Desktop because rclone runs its own local listener, but QuickBox uses the dashboard as the OAuth redirect target which requires a Web application client).

    • Name: any identifier you choose (e.g., QuickBox-rclone).

    • Authorized redirect URIs: click Add URI and enter:

      https://<your-dashboard-domain>/api/packages/rclone/oauth/gdrive/callback
    • Click Create.

  5. Copy the Client ID and Client Secret from the confirmation dialog and paste both into the dashboard install dialog, then click Authorize Google Drive.
Expect an 'unverified app' warning during authorize (Option A)
Warning

If you chose Option A (Publish to production) above, the Google consent screen will show “Google hasn’t verified this app” during authorize. This is expected behavior for personal-use OAuth apps and does NOT mean QuickBox or rclone is unsafe — Google is warning you about YOUR OWN app, which it has no way to verify is benign without a paid review process. Click Advanced, then Go to (your-app-name) (unsafe) to proceed. After completing the authorization once, this screen will not appear again on the same browser unless you revoke access.

HTTPS is required
Tip

Both providers require HTTPS redirect URIs. Every QuickBox installation has lecert-managed SSL on its dashboard domain, so this works without any extra configuration. If you are running a local development install over HTTP, use Google’s “Testing” OAuth mode or Dropbox’s localhost exception.


Generating a Uloz.to app token

Uloz.to uses direct credentials — no OAuth flow. You need three values:

  • Username — your Uloz.to account login name
  • Password — your Uloz.to account password
  • App token — a separate per-application token, distinct from your password

To generate an app token, log in to Uloz.to and go to https://uloz.to/in-settings  (the Application tokens section). Create a new token and copy it into the dashboard install dialog or the --uloz-app-token CLI flag.

App token vs account password
Note

The app token and account password are separate credentials. The app token is what rclone uses to authenticate. Your account password is also required during install because rclone needs both to set up the remote correctly.


Configuration and files

QuickBox creates a per-user config directory and a working folder with cache, mounts, and upload scripts.

Path
Description
/home/username
.config/rclone/
Per-user rclone configuration
rclone.conf
Remote definitions and credentials (OAuth token, Uloz.to creds, crypt config)
rclone_beta.txt
Present when installed with --beta; marks the beta channel
rclone/
Working directory for mounts, uploads, and logs
cache/
Upload staging area — files here are moved to the cloud by move.sh
gdrive
Link to the Google Drive mount in /run/qbrclone/username (or the crypt view when encrypted)
dropbox
Link to the Dropbox mount in /run/qbrclone/username (or the crypt view when encrypted)
uloz
Link to the Uloz.to mount in /run/qbrclone/username (or the crypt view when encrypted)
gmedia
Link to the mergerfs overlay for Google Drive installs (cache + gdrive)
dmedia
Link to the mergerfs overlay for Dropbox installs (cache + dropbox)
umedia
Link to the mergerfs overlay for Uloz.to installs (cache + uloz)
move.sh
Nightly upload script — run by cron at 03:12 server time
move.log
Upload log — records each move.sh run; read by qb user rclone -o logs
rclone.lock
Upload lock file — prevents concurrent runs; remove with remove_lock op if stuck

Where the cloud mount lives

QuickBox mounts each cloud drive as root, in a folder outside your home, and runs rclone itself as your account.

Path
Description
/run/qbrclone/username
gdrive, dropbox or uloz/
The cloud mount for your provider
gmedia, dmedia or umedia/
The mergerfs overlay of your cache folder and the cloud mount

The folder is owned by root. Your account and its group can read it, nobody can change it, and the web server is denied. The entries in /home/username/rclone are links to it, so keep using the paths under /home/username/rclone in your apps. The mergerfs overlay is mounted by the systemd unit run-qbrclone-username-gmedia.mount (dmedia or umedia for the other providers). A username with a hyphen is written with systemd escapes, so list the exact name with systemctl list-units 'run-qbrclone-*'.

QuickBox also keeps user_allow_other off in /etc/fuse.conf: on each update it comments out every setting in that file except mount_max. FUSE then refuses allow_other for a mount an account starts by hand, so such a mount stays private to that account.

Servers installed before this layout are moved over by the next QuickBox update, which restarts each account’s cloud mount once.


Common tasks — rclone operations

Eight per-user operations are available after install. The five most common — status, upload now, view logs, remove lock, and re-authorize — are buttons on the rclone control card in the dashboard, so day-to-day management never needs the terminal. Switch provider is a sixth button, shown to admins only. The remaining two (schedule, config-edit) do not yet have a dashboard control and are run from the CLI; config-edit is additionally admin-gated. Run a CLI op with -u username to target a specific user.

OperationWhat it doesCommandDashboard
statusShow mount health, last upload time, lock state, provider, and whether encryption is active.qb user rclone -o status -u username✓
uploadTrigger an immediate upload via move.sh (skips the nightly cron schedule).qb user rclone -o upload -u username✓
logsTail the last 20 lines of move.log.qb user rclone -o logs -u username✓
remove_lockDelete a stuck rclone.lock file so the next upload can proceed.qb user rclone -o remove_lock -u username✓
reauthRe-authorize OAuth credentials for Dropbox or Google Drive, or refresh Uloz.to credentials. Run when a token has expired or been revoked.qb user rclone -o reauth -u username✓
scheduleView or edit the crontab time for the nightly upload. Interactive — shows current time and prompts for a new one.qb user rclone -o schedule -u usernameCLI for now
config-editOpen rclone.conf in a text editor. Admin only.qb user rclone -o config-edit -u usernameCLI for now
switch-providerMove the user's rclone setup to a different provider. Admin only. Keeps encryption, moves no files, and restores the previous provider if the switch fails.qb user rclone -o switch-provider -u username --dropbox --client-id <id> --client-secret <secret> --token <json>✓ (admin)
Who can run what
Note

The five everyday operations (status, upload, logs, remove_lock, reauth) and schedule can be run by the user themselves. config-edit and switch-provider require admin privileges, on the CLI and in the dashboard alike. The gate is by role, not by surface — schedule and config-edit are CLI-only today simply because the dashboard control card does not expose them yet.

Switching providers with switch-provider

To move a user from one cloud provider to another without reinstalling:

bash
# Switch to Dropbox (OAuth — requires pre-authorized token)
qb user rclone -o switch-provider -u username \
  --dropbox \
  --client-id <app_key> \
  --client-secret <app_secret> \
  --token '{"access_token":"...","refresh_token":"...","token_type":"Bearer","expiry":"..."}'
 
# Switch to Uloz.to (direct credentials)
qb user rclone -o switch-provider -u username \
  --uloz \
  --uloz-user <username> \
  --uloz-pass <password> \
  --uloz-app-token <token>

What the switch does, in order:

  1. Saves a timestamped backup of rclone.conf to ~/.config/rclone/rclone.conf.bak.YYYYMMDDHHMMSS.
  2. Writes and checks the new provider’s remote while your current setup keeps running.
  3. If the account is encrypted, keeps the crypt remote and points it at the encrypt folder of the new provider.
  4. Removes the old remote, swaps the systemd units, installs the matching move.sh, and restarts the services. Syncing pauses briefly.
  5. Replaces the old provider’s links in ~/rclone with the new provider’s.

Files are not moved. Anything already stored with the old provider stays there, and the new provider shows only what it already holds.

If any step fails, QuickBox puts the saved rclone.conf, units and move.sh back, starts what was running, and reports the switch failed; the previous provider was restored.

Switch from the dashboard (admins)

On the App Dashboard, open the Cloud Sync row of the Storage card and click Manage, then Switch provider. This button is shown to admins only, and the form switches the provider of the account you are logged in as.

  1. Pick the New provider (Dropbox, Google Drive, or Uloz.to).
  2. For Dropbox or Google Drive, paste the Authorization token, the JSON that rclone authorize prints for the new provider. Client ID and Client secret are optional and only needed when the token came from your own OAuth app. For Uloz.to, enter the username, password, and app token.
  3. Click Switch provider and confirm. The dialog repeats that your files are not moved.

To switch another user’s account, use the CLI command above.


Service management

Dashboard alternative
Tip

Most everyday operations (status, upload now, view logs, remove lock, re-authorize) are also available through the rclone control card in the QuickBox dashboard — no terminal required. After install, the App Dashboard Storage widget also shows a Cloud Sync row with your provider, last-upload time, and a Manage button. See App Management — Storage widget for details. The CLI commands below are for terminal-based administration when you need them.

bash
# Restart the rclone mount service
systemctl restart rclone@username
 
# Check mount service status
systemctl status rclone@username
 
# Check the Google Drive mergerfs mount
systemctl status run-qbrclone-username-gmedia.mount
 
# Check the Dropbox mergerfs mount
systemctl status run-qbrclone-username-dmedia.mount
 
# Check the Uloz.to mergerfs mount
systemctl status run-qbrclone-username-umedia.mount
 
# Clear the upload log
qb clean rclone_logs -u username

Encryption

The --encrypted flag creates a crypt remote layered over the main remote. Files stored in the cloud are encrypted; the local mount path shows them transparently decrypted.

Key facts:

  • Encryption is configured at install time only. There is no upgrade path from a plaintext install to an encrypted install — you must reinstall.
  • The Encryption password (--enc-pass) and the Encryption salt (--salt-pass) must both be provided and must be different from each other. Store them safely — there is no recovery if they are lost.
  • All three providers (Dropbox, Google Drive, and Uloz.to) support encryption.
  • Switching provider keeps an encrypted setup encrypted: the crypt remote and its passwords stay, and point at the new provider.
  • The dashboard install dialog shows the encryption fields when Encrypt remote contents is set to Yes.
bash
# Verify encryption is active for a user
qb user rclone -o status -u username
# Look for "encrypted: yes" in the output

Troubleshooting

Mount path is empty or missing
Warning

Confirm that rclone@username is active: systemctl status rclone@username. Also check the mergerfs mount unit for your provider (run-qbrclone-username-gmedia.mount, run-qbrclone-username-dmedia.mount, or run-qbrclone-username-umedia.mount). The entries in /home/username/rclone are links to /run/qbrclone/username, so they only show content while the mount is up. If the service failed on start, check journalctl -u rclone@username for the reason.

Uploads not running
Info

Confirm the cron entry exists: crontab -l -u username | grep move.sh. The default schedule is 12 3 * * *. Also run qb user rclone -o status -u username — if “lock: held” appears without an active upload, run qb user rclone -o remove_lock -u username to clear the stale lock.

OAuth errors — redirect_uri mismatch
Warning

If the Dropbox or Google authorization page shows a redirect_uri mismatch error, the callback URL is not registered in your OAuth app. Open your app’s settings at the provider’s developer console and add the exact callback URL:
- Dropbox: https://<dashboard-domain>/api/packages/rclone/oauth/dropbox/callback
- Google: https://<dashboard-domain>/api/packages/rclone/oauth/gdrive/callback

OAuth errors — invalid client_id or client_secret
Warning

Double-check that you copied the full App Key and App Secret (Dropbox) or Client ID and Client Secret (Google) without trailing spaces. For Google, also confirm the Google Drive API is enabled in your project’s API Library.

Uloz.to credential errors
Caution

If the Uloz.to remote fails to authenticate, check each credential separately. The app token and account password are different. Generate the app token at uloz.to/in-settings under Application tokens.

Encryption password mismatch after reinstall
Warning

If you reinstall with --encrypted and the new passwords do not match the ones used originally, rclone will not be able to decrypt existing files in the cloud. The old files are not lost — reinstall again with the original passwords to restore access.


Best practices

Do

  • Use only one provider flag per install: --dropbox, --gdrive, or --uloz.
  • Register the callback redirect URI in your OAuth app settings before clicking Authorize.
  • Store your encryption password and salt in a password manager — there is no recovery path.
  • Run qb user rclone -o status -u username after install to confirm the mount is healthy.
  • Use switch-provider to migrate between providers rather than reinstalling — it preserves the user's existing cron schedule.

Don't

  • Do not edit systemd unit files under /etc/systemd/system by hand.
  • Do not remove rclone.lock while an upload is actively running — use qb user rclone -o status first.
  • Do not attempt to add encryption to an existing plaintext install — a fresh install is required.
  • Do not share the same OAuth app between multiple QuickBox users — create one app per install.

FAQ


Resources


Join the Community

Media server operators sharing configs, getting support, and shaping the future of QuickBox Pro.

  • Dedicated Support
  • Feature Previews
  • Community Configs
  • Active Discussions
Join Discord Server
Last updated on