Nextcloud Clients - Desktop and Mobile Sync

Status: Active
Last Updated: 2026-08-14
Category: Cloud - Phase 1: File Storage & Sync
Prerequisites: nextcloud-setup
Time: 1-2 hours
Tags: nextcloud, sync, desktop-client, mobile, webdav, file-sharing, selective-sync

Summary

A server is only half of a personal cloud โ€” this lesson connects every device you own to it. Install and tune the Nextcloud desktop client (with virtual files and selective sync), configure mobile apps for automatic photo upload, access files via WebDAV from any OS, and master the sharing model that keeps your data private while still being shareable.

๐ŸŽฏ What You'll Learn

By the end of this article, you'll be able to:


Client Landscape

Client Platform Protocol Best for
Nextcloud Desktop Win/Mac/Linux Proprietary sync protocol over HTTPS Primary workstation
Nextcloud Mobile iOS/Android Same Photo auto-upload, on-the-go access
WebDAV mount All OSes WebDAV Occasional access, no install rights
rclone CLI everywhere WebDAV/S3 Scripts, servers, big transfers
Browser Any Web UI Quick shares, no install

All clients talk to the same server you deployed in nextcloud-setup; nothing new to install there.


Desktop Client Setup (Linux example)

# Debian/Ubuntu
sudo apt install nextcloud-desktop

# Fedora
sudo dnf install nextcloud-client

# Arch
sudo pacman -S nextcloud-client

Launch โ†’ "Add account" โ†’ enter https://cloud.example.com โ†’ browser opens for OAuth2-style login โ†’ authorize.

What Happens: the client registers itself as an OAuth application with your server; credentials never sit in the client config in plaintext โ€” a refresh token does. Revoke anytime under Settings โ†’ Security โ†’ Devices & sessions.

The Critical First Choice: What Syncs?

The wizard asks how to connect your folders:

  1. Sync everything โ€” full mirror of your Nextcloud on this disk.
    • Use when: laptop has space, you want offline access to all files.
  2. Selective sync โ€” pick folders to mirror.
    • Use when: server is bigger than laptop SSD.
  3. Virtual files (Windows/macOS) โ€” files appear in Explorer/Finder but download on open.
    • Use when: huge libraries, small disks. Linux gets this via GNOME online accounts integration instead.
Decision rule:
  Need offline + have space?      โ†’ Sync everything
  Big library + Windows/macOS?    โ†’ Virtual files
  Big library + Linux?            โ†’ Selective sync (or GNOME integration)

Bandwidth and Behavior Tuning

Settings worth flipping on day one:

Verify health at a glance:

ls ~/Nextcloud/.sync-exclude.lst        # per-folder excludes
journalctl --user -u nextcloud-client   # Linux client logs (if using systemd unit)

The status icon is your truth source: green โœ“ synced, blue โŸณ syncing, yellow โš  paused/partial, red โœ• error. Never ignore a persistent red โ€” click it and read the first failing item.


Mobile Apps

Install Nextcloud (Android/iOS) and optionally Nextcloud Notes/Talk/Cookbook companions.

Android photo auto-upload (the killer feature)

  1. โ˜ฐ โ†’ Auto upload
  2. Choose source folder: /DCIM/Camera
  3. Choose destination: /Photos/<device-name>/
  4. Behavior options:
    • Upload over Wi-Fi only (default; change if you have generous cellular)
    • "Upload existing pictures" once, then incremental
    • Create dated subfolders (2026/08/) โ€” recommended for large libraries

What Happens: the app registers an Android WorkManager job watching the media store. New camera items get queued and uploaded when constraints (Wi-Fi + charging optional) hold. EXIF data and timestamps are preserved; uploads are chunked and resumable.

iOS notes

Battery/space tips


WebDAV Access Without Installing Anything

Nextcloud exposes every account at:

https://cloud.example.com/remote.php/dav/files/<USERNAME>/

Linux (GNOME Files)

Other Locations โ†’ Connect to Server:
  davs://cloud.example.com/remote.php/dav/files/alice/

KDE Dolphin: webdavs://alice@cloud.example.com/remote.php/dav/files/alice/

Permanent mount (fstab via davfs2)

sudo apt install davfs2
sudo mkdir /mnt/cloud
echo "https://cloud.example.com/remote.php/dav/files/alice/ /mnt/cloud davfs user,rw,noauto 0 0" | sudo tee -a /etc/fstab
echo "/mnt/cloud alice APP-PASSWORD" >> ~/.davfs2/secrets && chmod 600 ~/.davfs2/secrets
mount /mnt/cloud

Use an app password (Settings โ†’ Security โ†’ Create new app password), not your login password โ€” scoped and revocable.

macOS Finder

Finder โ†’ โŒ˜K โ†’ https://cloud.example.com/remote.php/dav/files/alice/

Windows Explorer

Map network drive โ†’ https://cloud.example.com/remote.php/dav/files/alice/ โ†’ check "Connect using different credentials".

Caveat table for WebDAV vs native client:

Aspect Native client WebDAV mount
Offline copies โœ… โŒ
Change detection Efficient state protocol Polls on access; slow listings
Large trees Fine Painful (10k+ entries)
Best use Daily driver Occasional drag-drop, kiosk machines

For scripts and bulk moves prefer rclone (rclone config โ†’ type webdav โ†’ vendor Nextcloud), which parallelizes where OS mounts serialize.


Sharing Model

Sharing happens in the web UI or right from the desktop client context menu.

Link shares (external people)

  1. Hover file โ†’ Share โ†’ Create public link
  2. Harden it:
    • Password โ€” always for sensitive docs (server enforces if admin requires)
    • Expiration date โ€” default policy suggestion: 30 days max
    • Permissions: read-only vs allow upload/edit ("file drop" = upload-only, great for intake folders)
# Scriptable equivalent:
occ share:create --link --password 'shared-secret' --expire-date '+30 days' \
    /Photos/vacation/album.zip

What Happens: a row lands in oc_share with token+hash; link recipients hit /s/<token> which proxies through your auth-free route. Revocation = delete share; the token dies instantly.

Internal shares (other users/groups)

Housekeeping policies (admin side)

occ config:app:set shareapi enforce_link_password --value=yes
occ config:app:set shareapi default_expire_date --value=yes
occ config:app:set shareapi expire_after_n_days --value=30
occ config:system:set sharing federation --value=true   # if you want cross-server shares

Versioning & Trash (Your First Safety Net)

Every client benefits from these server-side features automatically:

Remember from cloud-storage-concepts: this is history within sync โ€” it complements, not replaces, Restic snapshots.


Common Gotchas & Troubleshooting

"File locked" errors after crashes. Stale Redis locks. Clear safely: occ files:scan --path="alice" plus flush stale locks: docker compose exec redis redis-cli -a $REDIS_HOST_PASSWORD --scan --pattern '*lock*' | xargs ... del (stop the client first).

Conflict copies file (conflicted copy ...).txt. Two devices edited while offline. Not a bug โ€” merge manually, then delete one. Reduce frequency: close documents before shutting laptops.

Client ignores a folder entirely. It matched an ignore pattern or .sync-exclude.lst. Check Settings โ†’ Ignored Files.

Photo uploads duplicated after reinstall. Destination folder changed; the app tracks uploads by target path. Keep destinations stable per device (/Photos/<device-name>/) and don't rename them.

WebDAV painfully slow on huge folders. Expected โ€” listings are O(n). Use rclone or the native client for big trees.

Clock skew causes endless re-sync loops. NTP matters: timedatectl status should show synchronized on both server and client.


Practical Exercises

  1. Set up the desktop client with selective sync, then add a new folder server-side and watch discovery behavior.
  2. Configure Android/iOS auto-upload into a dated structure; verify EXIF preserved by checking Properties in the web UI.
  3. Create a password-protected, 7-day-expiry read-only link; test it from a private window; revoke early.
  4. Mount via WebDAV on a machine without the desktop client and time listing a 5,000-file folder vs the native client.
  5. Delete a file, restore it from trash; then edit a file twice and restore yesterday's version. You've now exercised the safety nets.

๐Ÿ”— Related

Change Log

Choose Theme

Your selection is saved locally.

Neural Cacophony
Aperture v2
Flux v1
Mosaic Chaos
Nexus v1
Nexus Zest
Prism v2
Synapse