February 28Feb 28 Dropbox DockerA Docker container that runs the official Dropbox headless daemon on Linux. Built for homelabs that need reliable, hands-off Dropbox sync — especially large accounts with hundreds of thousands of files.Docker Hub: https://hub.docker.com/r/islamdiaa/dropbox-docker GitHub: https://github.com/islamdiaa/dropbox-dockerWhy I built thisEvery Dropbox Docker image I found was either abandoned, crashing on large accounts, or missing basic things like health checks and graceful shutdown. I run a 1M+ file Dropbox account on my Unraid server and needed something that wouldn't fall over. The existing images (otherguy/docker-dropbox, janeczku/dropbox) are unmaintained and crash on large accounts due to a Rust panic in Dropbox's telemetry code. This container fixes that.FeaturesTelemetry crash fix — blocks the analytics endpoint that causes a known Rust panic during indexing of large accounts. No patches, just isolation.File ownership auto-fix — files created by root/SSH inside the Dropbox folder are automatically chowned every ~6 minutes so they actually sync.Stale file cleanup — removes leftover .dropbox directories from previous installations that cause PermissionDenied errors on startup.Process supervision — bounded restarts, signal forwarding, graceful shutdown on docker stop.Docker HEALTHCHECK — runs dropbox status every 60s with a 2-minute startup grace period.Auto-update — pulls the latest official Dropbox binary on every startup.Optional monitoring — Prometheus metrics (port 8000) and JSON status API (port 8001).Security hardened — input validation, PII redacted from API, capability dropping, no docker.sock required.CI/CD — automated builds, ShellCheck, hadolint, Trivy vulnerability scanning, unit + E2E tests.Quick Start on UnraidInstall from Community Apps (search "Dropbox") or add the template manuallyConfig path: /mnt/user/appdata/dropboxSync folder: Use a direct disk path like /mnt/disk1/Dropbox — do not use /mnt/user/DropboxImportant: Go to Settings → Shares → Dropbox → set Use cache: NoSet DROPBOX_UID=99 and DROPBOX_GID=100 (Unraid's nobody:users)Start the container and check logs for the account linking URLOpen the URL in a browser to connect your Dropbox accountWhy "Use cache: No" mattersIf caching is enabled, files written via /mnt/user/Dropbox/ land on the cache drive first, but the container mounts the disk path directly and won't see those files until the mover runs. Setting cache to No ensures all writes go directly to the disk where the container can detect and sync them immediately.For large accounts (500K+ files)Set --memory 4g or higherSet DROPBOX_STARTUP_TIMEOUT=600 (initial indexing takes time)Set POLLING_INTERVAL=30 (reduce CPU)Keep SKIP_SET_PERMISSIONS=true (the default)Bump inotify watchers on the host: echo "fs.inotify.max_user_watches=1048576" >> /etc/sysctl.conf && sysctl -pConfigurationVariableDefaultDescriptionDROPBOX_UID1000User ID (use 99 for Unraid)DROPBOX_GID1000Group ID (use 100 for Unraid)TZUTCTimezonePOLLING_INTERVAL5Status check frequency (seconds)DROPBOX_STARTUP_TIMEOUT300Startup wait time (seconds)DROPBOX_MAX_RESTARTS5Max crash restarts before giving upENABLE_MONITORINGfalseEnable Prometheus + status APISKIP_SET_PERMISSIONStrueSkip slow recursive chownFull docs: https://github.com/islamdiaa/dropbox-docker#configurationTemplate Repositoryhttps://github.com/islamdiaa/dropbox-docker/blob/main/unraid-template.xmlStabilityCurrently running on my own Unraid 7.2.3 server — multi-day uptime, 0 restarts, syncing "Up to date" with a large Dropbox account.
June 8Jun 8 Hey there, thank you for putting this out there.I have a persistent issue, where my account won't sync, and then after a restart it won't be logged in. Funny enough, checking /root/appdata/dropbox/.dropbox, I can see that it creates new instances after a restart. I have instance1 and instance2 - this will continue after each restart.Is there something I should try out here? I had the exact same issue with the older image from other-guy.Thank you.docker inspect dropbox.txt
August 21Aug 21 I had this issue as well. tl;dr is the container needs the KILL capability. https://github.com/islamdiaa/dropbox-docker/issues/11 In case it matters, I'm running this via docker compose and not the Unraid template and after adding KILL the container and docker client seems to work (my client is still starting in the container, but I think that's normal).
August 30Aug 30 This looks like a really useful option for Unraid, especially for large Dropbox accounts. The health check and graceful restart handling are nice additions compared with some of the older containers.The direct disk path recommendation is also helpful since the /mnt/user vs. /mnt/disk behavior can easily cause confusing sports games online sync issues. I’ll probably give this a try on my server, and the Prometheus metrics are a nice bonus for monitoring. Edited August 30Aug 30 by williamcorlin
September 14Sep 14 Seems like this author is not active and will also abandon this in the future 🤷♂️
October 11Oct 11 Author Sorry for the silence, everyone, and thanks for the reports. I went through all of them, reproduced the problems, and version 1.2.0 fixes them. To get it, go to the Docker tab and click apply update on the Dropbox container.What was wrongLinked ("Welcome …") but nothing syncs. If the sync folder (e.g. /mnt/disk1/Dropbox) didn't exist before the first start, Docker creates it owned by root. Dropbox runs as nobody (99) and couldn't write a single file into it. The container now makes the folder writable at startup. If it still can't write, the log shows an ERROR saying so.Dropbox was force-killed on every stop, restart or update. With the template's polling interval of 30 seconds, the container only reacted to a stop request after its current 30-second wait. Docker gives up after 10 seconds and kills Dropbox hard. Killing Dropbox mid-write can damage its settings. I believe that's why some of you were logged out after a restart and got a new instance1/instance2 folder. Dropbox now shuts down cleanly within a second.Several Dropbox processes, each with a new link URL. With cap_drop: ALL (compose setups), the container's watchdog needed the KILL capability to see that Dropbox was running. Without it, it assumed Dropbox had crashed and kept starting new copies. Thanks @Anticast for the pointer to GitHub issue #11. The KILL capability is no longer needed. If you added it as a workaround, you can keep it or remove it.Crash loop on the very first start with a fresh config volume. Fixed.After updating, check the container log. It now tells you:if your sync folder or config is on /mnt/user/.... Dropbox doesn't support Unraid's FUSE share layer, so use /mnt/diskX/... or /mnt/cache/... insteadif the sync folder isn't writableafter linking, which folder your account actually syncs to. Dropbox Business/team accounts can use a different folder name; see the README section "Dropbox Business and team folders".Still asked to link again after a restart? Set the "Dropbox config" path to a direct path such as /mnt/cache/appdata/dropbox instead of /mnt/user/appdata/dropbox. Then remove the old device at dropbox.com → Settings → Security and link once more.There's also a new "Ownership repair" setting (advanced view). Leave it on full unless other users own files in your Dropbox share and you don't want the container to change that.@HHUBS , fair point, I had fallen behind. Every change now goes through the full test suite before an image is published. If the monthly rebuild fails, an issue gets opened automatically, so this shouldn't go unnoticed again.If anything still doesn't work after updating, please post the container log from the start. Remove the cli_link_nonce link first: anyone who has it can link your account.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.