# Mount a Copyparty Server as a Local Folder with Rclone This guide mounts a Copyparty server's WebDAV share as a local folder (or drive letter on Windows) and makes it reconnect automatically at startup. Each platform section is self-contained; jump to yours. **Placeholders used throughout:** | Placeholder | Replace with | | --- | --- | | `https://domain.tld/location` | Your Copyparty URL, including the volume path if you only want one volume | | `copyparty` | The rclone remote name (any name works; use it consistently) | | `YOURUSER` | Your local account name (run `whoami` to check) | **Shortcut:** Copyparty's "connect" page at `https://domain.tld/?hc` generates ready-made rclone commands for your server. The steps below do the same thing by hand. **Why rclone:** Windows and macOS can connect to WebDAV natively, but Copyparty's docs list several bugs in the built-in Windows client and report rclone as considerably faster. Copyparty's docs list **rclone v1.63 or later** for read/write WebDAV. --- ## Linux ### 1. Install rclone and FUSE Install from your distribution's repository: ```bash # openSUSE sudo zypper install rclone fuse3 # Debian / Ubuntu sudo apt install rclone fuse3 # Fedora sudo dnf install rclone fuse3 # Arch sudo pacman -S rclone fuse3 ``` Check the version: ```bash rclone version ``` If it is older than **v1.63**, remove the distro package and install the current release with rclone's official script instead: ```bash sudo -v ; curl https://rclone.org/install.sh | sudo bash ``` Do not use the Snap package. It cannot mount. ### 2. Create the rclone remote Use the interactive wizard. It stores the password in the config file, so it never appears in your shell history or process list. ```bash rclone config ``` Answer the prompts: 1. `n` for **New remote**. 2. Name: `copyparty` 3. Storage: type `webdav`. 4. URL: `https://domain.tld/location` 5. Vendor: type `owncloud`. Copyparty is built to work with rclone's owncloud mode, which preserves file modification times. 6. User: any value. Copyparty ignores the username unless the server runs with `--usernames`; in that case, use your real username. 7. Password: `y` for **Yes, type in my own password**, then enter it twice. Input is hidden. 8. Bearer token: leave blank. 9. Edit advanced config: `n`. 10. Keep this remote: `y`, then `q` to quit. Apply Copyparty's recommended speed setting and lock down the config file: ```bash rclone config update copyparty pacer_min_sleep 0.01ms chmod 600 ~/.config/rclone/rclone.conf ``` The password in `rclone.conf` is obscured, not encrypted. Anyone who can read the file can recover it, which is why the file permissions matter. Test the connection: ```bash rclone lsd copyparty: ``` You should see your folders. If you get a 401 error, the password (or the username, if the server uses `--usernames`) is wrong. ### 3. Prepare the mount point ```bash sudo mkdir -p /mnt/copybox sudo chown "$USER": /mnt/copybox ``` The trailing colon assigns your login group. Some distros, including openSUSE, do not create a group with the same name as your user, so `$USER:$USER` fails there. **Optional: `allow_other`.** Only needed if other accounts, such as root, Docker containers, or a Samba share, must read the mount. Open `/etc/fuse.conf` as root and uncomment: ```text user_allow_other ``` Then keep `--allow-other` in the service below. If you do not need it, delete that line from the service. ### 4. Test the mount by hand Always confirm the command works before turning it into a service: ```bash rclone mount copyparty: /mnt/copybox \ --vfs-cache-mode writes \ --vfs-cache-max-age 5s \ --attr-timeout 5s \ --dir-cache-time 5s ``` In a second terminal, run `ls /mnt/copybox`. When it works, press **Ctrl+C** in the first terminal to unmount. These flags are the ones Copyparty's docs recommend. `--vfs-cache-mode writes` lets applications edit files in place. The short cache times make changes made on the server appear within seconds, at the cost of more requests. ### 5. Create the systemd service Find the exact paths the service needs: ```bash command -v rclone # usually /usr/bin/rclone command -v fusermount3 # usually /usr/bin/fusermount3 ``` Create the service file: ```bash sudo nano /etc/systemd/system/mnt-copybox.service ``` Paste the following, replacing every `YOURUSER` with your account name. systemd does not expand shell variables such as `$USER` or `~`, so these must be literal paths. Adjust the `rclone` and `fusermount3` paths if the commands above printed something different. ```ini [Unit] Description=Rclone mount of Copyparty WebDAV at /mnt/copybox Wants=network-online.target After=network-online.target [Service] Type=notify User=YOURUSER ExecStart=/usr/bin/rclone mount copyparty: /mnt/copybox \ --config=/home/YOURUSER/.config/rclone/rclone.conf \ --cache-dir=/home/YOURUSER/.cache/rclone \ --vfs-cache-mode writes \ --vfs-cache-max-age 5s \ --attr-timeout 5s \ --dir-cache-time 5s \ --allow-other ExecStop=/usr/bin/fusermount3 -uz /mnt/copybox Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target ``` What the key lines do: * `Type=notify`: systemd marks the service as started only after the mount is actually ready. * `User=`: runs rclone as you, so it uses your config. `Group=` is omitted so systemd uses your primary group, whatever it is called. * `Restart=on-failure` / `RestartSec=10`: if the server is unreachable at boot, the service fails and systemd retries every 10 seconds. Nothing else in the boot process waits on it. * `WantedBy=multi-user.target`: the standard target for system services that start at boot. ### 6. Enable and start the service ```bash sudo systemctl daemon-reload sudo systemctl enable --now mnt-copybox.service ``` `enable --now` starts the mount immediately and sets it to start at every boot. Verify: ```bash systemctl status mnt-copybox.service findmnt /mnt/copybox ls /mnt/copybox ``` Watch the logs if something fails: ```bash journalctl -u mnt-copybox.service -f ``` After editing the service file later, run `sudo systemctl daemon-reload` and `sudo systemctl restart mnt-copybox.service`. --- ## Windows ### 1. Install rclone and WinFsp rclone needs **WinFsp** to mount drives on Windows. In PowerShell: ```powershell winget install Rclone.Rclone winget install WinFsp.WinFsp ``` Or download them from [rclone.org/downloads](https://rclone.org/downloads/) and [winfsp.dev](https://winfsp.dev/). Close and reopen PowerShell afterward so `rclone` is on your PATH, then check: ```powershell rclone version ``` **Use a normal PowerShell window, not "Run as administrator", for every step below.** Drives mounted from an elevated window are invisible to File Explorer. ### 2. Create the rclone remote ```powershell rclone config ``` Answer the prompts: 1. `n` for **New remote**. 2. Name: `copyparty` 3. Storage: type `webdav`. 4. URL: `https://domain.tld/location` 5. Vendor: type `owncloud`. Copyparty is built to work with rclone's owncloud mode, which preserves file modification times. 6. User: any value. Copyparty ignores the username unless the server runs with `--usernames`; in that case, use your real username. 7. Password: `y` for **Yes, type in my own password**, then enter it twice. Input is hidden. 8. Bearer token: leave blank. 9. Edit advanced config: `n`. 10. Keep this remote: `y`, then `q` to quit. Apply Copyparty's recommended speed setting: ```powershell rclone config update copyparty pacer_min_sleep 0.01ms ``` To see where the config file is stored, run `rclone config file`. The password in it is obscured, not encrypted, so do not share the file. Test the connection: ```powershell rclone lsd copyparty: ``` You should see your folders. A 401 error means the password (or the username, if the server uses `--usernames`) is wrong. ### 3. Test the mount by hand Pick an unused drive letter. This guide uses `X:`. ```powershell rclone mount copyparty: X: --network-mode --vfs-cache-mode writes --vfs-cache-max-age 5s --attr-timeout 5s --dir-cache-time 5s ``` Open File Explorer and check that `X:` appears and shows your files. Press **Ctrl+C** in PowerShell to unmount. `--network-mode` makes Windows treat the mount as a network drive rather than a local disk, which rclone recommends if programs misbehave with the default mode. The cache flags are the ones Copyparty's docs recommend. ### 4. Mount automatically at sign-in This creates a Task Scheduler task that mounts the drive each time you sign in, hidden in the background, with a log file. Paste it into a **normal** PowerShell window: ```powershell $rclone = (Get-Command rclone.exe).Source $logFile = "$env:LOCALAPPDATA\rclone\copybox-mount.log" New-Item -ItemType Directory -Force -Path (Split-Path $logFile) | Out-Null $arguments = "mount copyparty: X: --network-mode --vfs-cache-mode writes --vfs-cache-max-age 5s --attr-timeout 5s --dir-cache-time 5s --no-console --log-file `"$logFile`"" $action = New-ScheduledTaskAction -Execute $rclone -Argument $arguments $trigger = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME $trigger.Delay = 'PT30S' $principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive -RunLevel Limited $settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit ([TimeSpan]::Zero) -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries Register-ScheduledTask -TaskName "Rclone Copybox Mount" -Action $action -Trigger $trigger -Principal $principal -Settings $settings ``` What this does: * Runs as you, unelevated (`RunLevel Limited`), so the drive shows up in File Explorer. * Waits 30 seconds after sign-in so the network is up before mounting. * `-ExecutionTimeLimit 0` removes Task Scheduler's default 3-day limit, which would otherwise kill the mount. * `--no-console` hides the console window (it may flash briefly), and `--log-file` records errors since there is no window to show them. If Windows refuses to create the task, run the same block in an administrator PowerShell window. The `-RunLevel Limited` principal still makes the task itself run as you, unelevated. Start it now without signing out: ```powershell Start-ScheduledTask -TaskName "Rclone Copybox Mount" ``` To stop the mount, run `Stop-ScheduledTask -TaskName "Rclone Copybox Mount"`. To remove it, run `Unregister-ScheduledTask -TaskName "Rclone Copybox Mount"`. If the drive does not appear, check the log at `%LOCALAPPDATA%\rclone\copybox-mount.log`. If the network was not ready in time, run `Start-ScheduledTask` again or increase the delay. The drive is visible only to your Windows account. Making it visible to every account requires running rclone as the SYSTEM account, which the [rclone install docs](https://rclone.org/install/#autostart-on-windows) cover. --- ## macOS ### 1. Install rclone **Do not install rclone with Homebrew.** The Homebrew build does not support mounting. Use rclone's official install script: ```bash sudo -v ; curl https://rclone.org/install.sh | sudo bash rclone version ``` This installs to `/usr/local/bin/rclone`. ### 2. Choose how to mount macOS has no built-in FUSE, so there are two options: * **`rclone nfsmount` (used in this guide):** rclone runs a small NFS server and mounts it with macOS's built-in NFS client. No extra software. rclone marks this command as experimental. * **macFUSE + `rclone mount`:** Install [macFUSE](https://macfuse.github.io/), then replace `nfsmount` with `mount` in the commands below. It uses a kernel extension, which on Apple Silicon Macs requires lowering the security policy in Recovery mode. FUSE-T is a third option, but rclone's docs warn that with FUSE-T, simply viewing files in Finder can change their modification time and make rclone re-upload them. Avoid it for this use. ### 3. Create the rclone remote ```bash rclone config ``` Answer the prompts: 1. `n` for **New remote**. 2. Name: `copyparty` 3. Storage: type `webdav`. 4. URL: `https://domain.tld/location` 5. Vendor: type `owncloud`. Copyparty is built to work with rclone's owncloud mode, which preserves file modification times. 6. User: any value. Copyparty ignores the username unless the server runs with `--usernames`; in that case, use your real username. 7. Password: `y` for **Yes, type in my own password**, then enter it twice. Input is hidden. 8. Bearer token: leave blank. 9. Edit advanced config: `n`. 10. Keep this remote: `y`, then `q` to quit. Apply Copyparty's recommended speed setting and lock down the config file: ```bash rclone config update copyparty pacer_min_sleep 0.01ms chmod 600 ~/.config/rclone/rclone.conf ``` The password in `rclone.conf` is obscured, not encrypted. Anyone who can read the file can recover it. Test the connection: ```bash rclone lsd copyparty: ``` You should see your folders. A 401 error means the password (or the username, if the server uses `--usernames`) is wrong. ### 4. Test the mount by hand ```bash mkdir -p ~/copybox rclone nfsmount copyparty: ~/copybox \ --vfs-cache-mode writes \ --vfs-cache-max-age 5s \ --attr-timeout 5s \ --dir-cache-time 5s ``` Open `~/copybox` in Finder or run `ls ~/copybox` in a second Terminal window. Press **Ctrl+C** to unmount. Do not drop `--vfs-cache-mode writes`: with `nfsmount` on macOS, leaving it out makes the mount read-only. ### 5. Mount automatically at login Create a LaunchAgent. Replace every `YOURUSER` with your account name; launchd does not expand `~` or `$HOME`, so paths must be absolute. ```bash nano ~/Library/LaunchAgents/local.rclone.copybox.plist ``` ```xml Label local.rclone.copybox ProgramArguments /usr/local/bin/rclone nfsmount copyparty: /Users/YOURUSER/copybox --config=/Users/YOURUSER/.config/rclone/rclone.conf --vfs-cache-mode=writes --vfs-cache-max-age=5s --attr-timeout=5s --dir-cache-time=5s RunAtLoad KeepAlive ThrottleInterval 10 StandardOutPath /Users/YOURUSER/Library/Logs/rclone-copybox.log StandardErrorPath /Users/YOURUSER/Library/Logs/rclone-copybox.log ``` What the key lines do: * `RunAtLoad`: starts the mount when you log in. * `KeepAlive` + `ThrottleInterval`: if rclone exits (for example, because the server is unreachable), launchd restarts it no more than once every 10 seconds. * The log paths let you see errors, since nothing is shown on screen. Load it now: ```bash launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/local.rclone.copybox.plist ``` Check that it is running: ```bash launchctl print gui/$(id -u)/local.rclone.copybox | grep -E "state|last exit" ls ~/copybox ``` To stop and disable it: ```bash launchctl bootout gui/$(id -u)/local.rclone.copybox ``` If it works from Terminal but not from launchd, check `~/Library/Logs/rclone-copybox.log`. If your Copyparty server is on your local network, also check **System Settings > Privacy & Security > Local Network**, since macOS can block background processes from reaching LAN addresses. If a crash leaves a stale mount, clear it with `umount -f ~/copybox`. --- ## Troubleshooting (All Platforms) * **401 Unauthorized:** Wrong password. If the server uses `--usernames`, the username must also be correct. Fix it with `rclone config`, choose `e` to edit the remote. * **Editing a file creates a copy with a long random name:** Your Copyparty account needs the **delete** permission on that volume to overwrite existing files. * **Uploads over 100 MiB fail:** Copyparty's docs note this happens when the server is behind Cloudflare, due to Cloudflare's upload size limit. * **Modification times or uploads misbehave:** Copyparty's docs suggest switching the vendor from `owncloud` to `fastmail` if `owncloud` ever stops working: `rclone config update copyparty vendor fastmail`.