pCloud et macOS 27 (bêta)

Comme tous les ans, pCloud est le vilain petit canard avec qq autres apps, qui vont déconner LONGTEMPS avec le nouveau macOS. En prime, l'archi de pCloud repose sur un truc qu'Apple retire de l'OS... Je détaille et je vous explique comment fiabiliser tout ça avec rclone.

Je pars du principe que vous avez l'app officielle installée et donc macFuse installé (que vous pouvez updater manuellement depuis le panneau de config du Mac.) Sinon, bha installez macFuse hein. :stuck_out_tongue:

Le cœur du problème réside dans l'abandon progressif et agressif par Apple des extensions de noyau (kexts).

Pour monter son lecteur virtuel dans le Finder de macOS, pCloud s'appuie sur une couche de compatibilité tierce appelée macFUSE (Filesystem in Userspace), utilisant une extension système connue sous le nom de pcloudfs. Au cours des derniers cycles de développement, Apple a rendu obsolètes les extensions de noyau au profit de son framework moderne en espace utilisateur, File Provider. Parce que pCloud continue de s'appuyer sur l'ancienne architecture kext, les versions modernes de macOS considèrent l'extension comme un risque pour la sécurité et la stabilité.

Lorsque le système d'exploitation détecte des pics de mémoire, des interruptions d'interrogation réseau ou des blocages mineurs de threads provenant du processus pcloudfs, macOS met fin de force à l'extension. Cela entraîne le démontage spontané du lecteur virtuel et, dans les cas graves, peut provoquer des paniques du noyau ou des pics d'utilisation du processeur.

Chez moi ça veut surtout dire perte du mount où Plex stocke tous mes films de vacance. RELOU. Sur macOS 27, le soft officiel va tout simplement refuser de mount le drive.
(Notez que la sync de folder à folder fonctionne en revanche. Ouf.)

Solution rclone

Déjà, N'INSTALLEZ PAS RCLONE VIA HOMEBREW.
Pour s'interfacer avec le système de fichiers de macOS via macFUSE, rclone nécessite un module de liaison C spécialisé connu sous le nom de cmount. Étant donné que la philosophie de gestion de paquets de Homebrew évite d'imposer des extensions de noyau tierces (comme macFUSE) comme dépendances de compilation strictes, les mainteneurs de Homebrew compilent intentionnellement le binaire rclone pour macOS sans l'indicateur cmount. RELOU 9000.

sudo curl https://rclone.org/install.sh | sudo bash

is the way.

Ensuite on configure avec

rclone config
  • Tapez n pour New Remote et appuyez sur Entrée.
  • Nommez le pcloud_remote (par exemple) et appuyez sur Entrée.
  • L'assistant présentera une liste de fournisseurs de stockage. Tapez pcloud et appuyez sur Entrée.
  • Laissez client_id et client_secret vides (appuyez sur Entrée pour les deux) pour utiliser les clés API optimisées par défaut de rclone.
  • Lorsqu'on vous demande l'emplacement de votre serveur, choisissez le centre de données où se trouve votre compte (par ex., 1 pour l'UE, 2 pour les États-Unis).
  • Lorsqu'on vous demande Edit advanced config?, tapez n.
  • Lorsqu'on vous demande Use auto config?, tapez y. Cela ouvrira votre navigateur web par défaut. Connectez-vous à pCloud et cliquez sur "Allow" (Autoriser) pour accorder l'accès à l'API.
  • Retournez au terminal, vérifiez les détails, et tapez y pour enregistrer, puis q pour quitter l'assistant de configuration.

Ensuite il suffit de faire un dossier pCloud dans notre dossier Home et lancer le bébé avec :

rclone mount "pCloud Drive:" "$HOME/pCloud Drive" \
  --vfs-cache-mode full \
  --vfs-cache-max-size 20G \
  --vfs-cache-max-age 24h \
  --volname "pCloud Drive" \
  --daemon

Ça permet de faire tourner pCloud avec un cache VFS qui va éviter plein de problèmes. Si 20 Go c'est trop ou pas assez, vous êtes grands, ajustez selon la machine / vos besoins.

Ça va monter le drive comme l'app officielle. Que vous pouvez garder aussi, Dans macOS 27 elle ne fonctionne pas sur le mount du drive mais cette méthode permet aussi de fiabiliser pCloud dans certains cas. Du coup changez le mount de l'app officiel vers un truc planqué et garder le rclone exposée vers vos app et finder.

Le reboot

Pour automatiser cette tâche et rendre le montage persistant au redémarrage sous macOS, l'approche propre consiste à utiliser launchd, le gestionnaire de services natif d'Apple. Contrairement à Linux qui utilise systemd ou /etc/fstab, macOS s'appuie sur des fichiers de configuration XML appelés « Property Lists » (.plist) pour gérer l'exécution en arrière-plan des processus (Daemons et Agents).

On va se faire un « Launch Agent » dédié à rclone. Ce script s'exécutera automatiquement à chaque ouverture de session.

Une modification importante de la commande

Avant de créer le fichier, il y a un détail technique crucial à comprendre : il faut retirer l'argument --daemon de la commande rclone.

Pourquoi ? Parce que launchd est conçu pour surveiller le processus de l'application. Si vous utilisez --daemon, rclone se détache du terminal et passe en arrière-plan par lui-même. launchd pensera alors que le processus a planté ou s'est arrêté de manière inattendue, et tentera de le relancer en boucle, créant une surcharge système (boot loop du processus). Rclone doit tourner au premier plan dans le conteneur de launchd pour que la directive de maintien en vie (KeepAlive) fonctionne correctement.

Étape 1 : Créer le fichier Launch Agent

Les Launch Agents de l'utilisateur sont stockés dans le répertoire ~/Library/LaunchAgents/.

  1. Ouvrez le terminal et créez un nouveau fichier .plist avec l'éditeur nano :

nano ~/Library/LaunchAgents/com.rclone.pcloud.plist

  1. Collez le code XML ci-dessous. WARNING : la variable $HOME n'est pas gérée nativement par les tableaux d'arguments de launchd, le chemin absolu /Users/votrecompte/ est donc utilisé à la place (changez "votrecompte" par votre nom de user) :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.rclone.pcloud</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/rclone</string>
        <string>mount</string>
        <string>pCloud Drive:</string>
        <string>/Users/votrecompte/pCloud Drive</string>
        <string>--vfs-cache-mode</string>
        <string>full</string>
        <string>--vfs-cache-max-size</string>
        <string>20G</string>
        <string>--vfs-cache-max-age</string>
        <string>24h</string>
        <string>--volname</string>
        <string>pCloud Drive</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/Users/votrecompte/Library/Logs/rclone-pcloud.error.log</string>
    <key>StandardOutPath</key>
    <string>/Users/votrecompte/Library/Logs/rclone-pcloud.log</string>
</dict>
</plist>

  1. Sauvegardez et quittez nano en appuyant sur Ctrl + O, Entrée, puis Ctrl + X.

Notes techniques sur ce fichier :

  • RunAtLoad force l'exécution au démarrage de la session.
  • KeepAlive ordonne à macOS de relancer automatiquement rclone s'il crashe de manière inattendue ou si le processus est tué.
  • Les clés StandardOutPath et StandardErrorPath dirigent les logs vers des fichiers textes standards de macOS. En cas d'erreur de montage, vous pourrez consulter ces fichiers pour diagnostiquer le problème.

Étape 2 : Charger le fichier dans le système

Il faut maintenant informer macOS de l'existence du bidule.
Assurez-vous d'abord que le lecteur pCloud n'est pas déjà monté manuellement pour éviter un conflit, puis exécutez cette commande :

launchctl load ~/Library/LaunchAgents/com.rclone.pcloud.plist

Le lecteur virtuel pCloud devrait apparaître instantanément dans le Finder.

Vérification : Vous pouvez interroger l'état de ce service dans launchd via la commande suivante, qui retournera le PID (Process ID) du service s'il fonctionne correctement :

launchctl list | grep com.rclone.pcloud

Boom, magique, à chaque démarrage du Mac et connexion à la session utilisateur, rclone montera le lecteur de façon transparente en tâche de fond, pendant que l'application officielle pCloud gérera vos synchronisations de dossiers dans son coin isolé.

Et un jour, UN JOUR pCloud modernisera son putain de soft... :stuck_out_tongue:

14 « J'aime »

On peut quand même raisonnablement penser (espérer) qu’ils vont trouver un moyen plus simple chez pCloud d’ici la sortie de macOS 27, non ? Parce que bonjour l’usine à gaz quand même.

2 « J'aime »

En vrai, passé le frisson du wall of text, c'est super simple et efficace. Maintenant OUI, of course qu'ils vont sortir une version "fonctionnelle" d'ici septembre. Maintenant j'attends toujours une réponse de leur part concernant l'upgrade de l'architecture du soft, parce que perso le drive qui saute au moindre hoquet de macOS, ça me trigger de ouf. J'ai aussi des indices de configuration macOS qui permettent de limiter le prob sur l'app officielle mais bon, on devrait pas avoir à se soucier de ça quoi...

1 « J'aime »

Bah juste merci quoi ^^

J'utilise pCloud pour livrer leurs galeries photos à mes clients pro et ça m'évitera de galèrer en septembre. Même s'il va falloir que je prenne le temps du pas à pas car le wall of text est réel ^^

1 « J'aime »

Un grand merci @Cafeine, tu nous dis d'acheter du Mac, d'acheter du pCloud etc...
Et après tu fais en plus le service après vente, c'est beau. :heart:

6 « J'aime »

AH, réponse à mon mail, c'est prometteur ! :tada:

Hello Arnaud,

Thank you for your message.

We will soon have something significantly better than File Provider — the new FSKit, which will be part of macFUSE 5 along with the updated pCloudFS.

We thoroughly evaluated File Provider, but ultimately decided against using it because it cannot provide a true virtual drive — only a simulated one. It also lacks the full capabilities that FUSE offers.

4 « J'aime »

Les devs reloux quand même, Apple propose une solution que tout le monde utilise (sauf les canards boiteux) et eux ils préfèrent attendre que quelqu'un d'autre réinvente la roue...