Traditional FUSE drivers like davfs2 suffer from significant performance bottlenecks: synchronous single-threaded I/O, heavy file explorer UI freezes, and latency when traversing directory trees.
Using Rclone configured with full VFS caching and managed as a Systemd user service provides native-like speed, asynchronous directory caching, and seamless background mounting.
1. Install Rclone
On RPM-based distributions (Fedora, RHEL):
sudo dnf install rclone -y
On Debian/Ubuntu:
sudo apt update && sudo apt install rclone -y
2. Configure the WebDAV Remote
Generate the obscured password string required by Rclone:
rclone obscure "YOUR_PASSWORD_HERE"
Create or edit ~/.config/rclone/rclone.conf:
[remote-webdav]
type = webdav
url = https://cloud.example.com/remote.php/dav/files/username/
vendor = nextcloud
user = username
pass = YOUR_OBSCURED_PASSWORD_STRING
(Set vendor = other if mounting a standard WebDAV instance instead of Nextcloud/ownCloud.)
3. Prepare the Mount Directory
Create the target mount path in your home directory:
mkdir -p ~/Nextcloud
4. Create the Systemd User Service
Running the mount as a user-level service ensures no root privileges are required and avoids boot race conditions with network availability.
Create the user service directory:
mkdir -p ~/.config/systemd/user/
Create ~/.config/systemd/user/rclone-webdav.service:
[Unit]
Description=Rclone WebDAV Mount Service
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/rclone mount remote-webdav: %h/Nextcloud \
--vfs-cache-mode full \
--vfs-cache-max-age 24h \
--vfs-read-chunk-size 32M \
--vfs-read-chunk-size-limit 2G \
--buffer-size 64M \
--dir-cache-time 72h \
--attr-timeout 10m \
--transfers 8 \
--checkers 16 \
--vfs-cache-max-size 10G \
--allow-non-empty
ExecStop=/usr/bin/fusermount -u %h/Nextcloud
Restart=on-failure
RestartSec=10
[Install]
WantedBy=default.target
Key Flags Breakdown:
--vfs-cache-mode full: Enables full POSIX read/write compatibility for local applications.--dir-cache-time 72h: Keeps the directory structure cached in RAM to make file explorer listings instant.--vfs-read-chunk-size 32Mand--buffer-size 64M: Optimizes file streaming without full downloads upfront.
5. FUSE user_allow_other Configuration
Allow processes from other users or sandboxes (such as Flatpak) to access FUSE mount points created by your user:
# Add the directive to the global FUSE configuration file
sudo bash -c 'echo "user_allow_other" >> /etc/fuse.conf'
# Ensure non-root users can read the config file
sudo chmod 644 /etc/fuse.conf
In the Rclone mount command (or in your .service file), make sure to include the flag:
--allow-other
6. Filesystem Access Permissions for Flatpak (Brave)
The Flatpak sandbox cannot resolve paths outside its default user space, which can result in 0 byte uploads when files are stored on /mnt or other external FUSE filesystems.
Grant access to the host filesystem and the specific mount point:
# Allow access to the host filesystem and the mount point
flatpak override --user --filesystem=host com.brave.Browser
flatpak override --user --filesystem=/mnt/nxtc com.brave.Browser
# Restart the browser to apply the sandbox changes
flatpak kill com.brave.Browser
To revoke the permissions at any time:
flatpak override --user --reset com.brave.Browser
7. Enable and Start the Service
Reload the user systemd daemon, enable the service on login, and start it immediately:
systemctl --user daemon-reload
systemctl --user enable --now rclone-webdav.service
Verify service status and file access:
systemctl --user status rclone-webdav.service
ls -la ~/Nextcloud