Add the Nextcloud desktop client with auto-start to the coder-xfce-vnc variant #30

Closed
opened 2026-10-12 08:25:37 +00:00 by claude-bot · 0 comments
Member

Problem

The desktop variant has no file-sync client, so there's no way to keep a Nextcloud folder in sync from the workspace desktop.

Findings

  • Package: Ubuntu 24.04 ships nextcloud-desktop 3.11.0 (late 2023). Nextcloud's own PPA (ppa:nextcloud-devs/client) has a current build for noble, 34.0.5, matching the latest upstream release.
  • Login storage: the client stores its app password through qtkeychain and deliberately compiles out the plain-file fallback (src/libsync/creds/keychainchunk.h: "We don't support insecure fallback"). The image has no keyring service, so the client would ask for a new login after every restart. That's unlike JetBrains Toolbox, which falls back to its own ~/.local/share/JetBrains/Toolbox/.securestorage file.
  • Embedded browser engine: the client pulls in Qt WebEngine (Chromium), which hits the same pod sandbox and 64 MiB /dev/shm limits as the Electron apps.
  • Desktop pieces already in place: XFCE has a system tray and honours /etc/xdg/autostart, $HOME is on the PVC, and the inotify limits are ample (470k watches, 8192 instances).

Proposal

In coder-xfce-vnc only:

  1. Install nextcloud-desktop from the official PPA, with the signing-key fingerprint asserted like the other third-party repos.
  2. Use KWallet (libkf5wallet-bin, KDE Frameworks 5.115, about +81 MB) as the keyring, not GNOME's. Create it with an empty password and unlock it silently at session start, the same way the PAM module does on a KDE login (pamOpen). This gives the same protection level as Toolbox's own file.
  3. Set the Qt WebEngine equivalents of the Electron workarounds: disable the sandbox, plus --disable-dev-shm-usage.
  4. Add a system-wide autostart entry using the client's own desktop-file id, so the client's "Launch on system startup" toggle and XFCE's Session & Startup panel can turn it off.
  5. Document it in the README.

🤖 Generated with Claude Code

## Problem The desktop variant has no file-sync client, so there's no way to keep a Nextcloud folder in sync from the workspace desktop. ## Findings - **Package:** Ubuntu 24.04 ships `nextcloud-desktop` **3.11.0** (late 2023). Nextcloud's own PPA (`ppa:nextcloud-devs/client`) has a current build for noble, **34.0.5**, matching the latest upstream release. - **Login storage:** the client stores its app password through qtkeychain and **deliberately compiles out the plain-file fallback** (`src/libsync/creds/keychainchunk.h`: "We don't support insecure fallback"). The image has no keyring service, so the client would ask for a new login after every restart. That's unlike JetBrains Toolbox, which falls back to its own `~/.local/share/JetBrains/Toolbox/.securestorage` file. - **Embedded browser engine:** the client pulls in Qt WebEngine (Chromium), which hits the same pod sandbox and 64 MiB `/dev/shm` limits as the Electron apps. - **Desktop pieces already in place:** XFCE has a system tray and honours `/etc/xdg/autostart`, `$HOME` is on the PVC, and the inotify limits are ample (470k watches, 8192 instances). ## Proposal In `coder-xfce-vnc` only: 1. Install `nextcloud-desktop` from the official PPA, with the signing-key fingerprint asserted like the other third-party repos. 2. Use **KWallet** (`libkf5wallet-bin`, KDE Frameworks 5.115, about +81 MB) as the keyring, not GNOME's. Create it with an **empty password** and unlock it silently at session start, the same way the PAM module does on a KDE login (`pamOpen`). This gives the same protection level as Toolbox's own file. 3. Set the Qt WebEngine equivalents of the Electron workarounds: disable the sandbox, plus `--disable-dev-shm-usage`. 4. Add a system-wide autostart entry using the client's own desktop-file id, so the client's "Launch on system startup" toggle and XFCE's Session & Startup panel can turn it off. 5. Document it in the README. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
actions/sindri#30
No description provided.