Sous Linux, accéder à iCloud Drive reste un défi. Apple ne propose ni client officiel, ni API stable ou documentée. Le backend iCloud de rclone existe, mais l’authentification echoue souvent avec une erreur HTTP 400. Ce comportement est connu et régulièrement remonté dans la documentation et les issues du projet.

Cet article présente une méthode alternative, fiable et reproductible, permettant de monter iCloud Drive comme un système de fichiers local sous Ubuntu, sans passer par la synchronisation complète ni par un navigateur.

Installer rclone

La manière la plus simple d’installer rclone sous Ubuntu est d’utiliser le script officiel :

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

Une fois l’installation terminée, vérifiez que l’outil est bien disponible :

rclone version

Configuration de rclone

Lancez l’assistant de configuration :

rclone config

Créez un nouveau remote :

n) New remote

Choisissez un nom pour le remote :

name> icloud

Sélectionnez le backend iCloud :

Storage> icloud

Renseignez votre identifiant Apple :

Apple ID> votre@email.com

Saisissez votre mot de passe Apple :

Password> ********

Lorsque l’assistant propose l’autorisation iCloud :

Authorize rclone with iCloud? (y/n)

Si l’autorisation iCloud aboutit, le remote est immédiatement opérationnel. En cas d’échec de l’authentification, la suite de l’article présente une méthode alternative permettant d’accéder à iCloud Drive.

Pourquoi la configuration standard échoue

La configuration classique commence par la commande :

rclone config

Elle propose de créer un nouveau remote de type icloud, puis de procéder à l’authentification Apple. Cependant, cette étape échoue souvent, même après validation de l’authentification à deux facteurs, avec l’erreur suivante :

HTTP error 400: Bad Request

Ce problème est causé par les évolutions fréquentes du mécanisme d’authentification web d’Apple. À ce jour, cette méthode ne fonctionne pas de manière fiable.

Principe de la solution alternative

On délègue l’authentification Apple à un outil qui la gère correctement : icloudpd. Cet utilitaire prend en charge la connexion à iCloud, y compris le 2FA, et enregistre les cookies de session. Ces cookies peuvent ensuite être réutilisés par rclone, sans avoir à repasser par le processus d’authentification problématique.

Installer et utiliser icloudpd

Commencez par créer un environnement virtuel Python pour isoler l’installation :

python3 -m venv ~/venvs/icloudpd
source ~/venvs/icloudpd/bin/activate
pip install icloudpd

Lancez ensuite l’authentification :

icloudpd \
  --username votre@email.com \
  --cookie-directory ~/icloud-cookies \
  --directory /tmp/icloud-test \
  --only-print-filenames

Cette commande initie une session iCloud, gère le 2FA, et enregistre les cookies dans le dossier ~/icloud-cookies, sans télécharger de fichiers.

Extraire les cookies utilisables par rclone

Les cookies générés sont au format LWP. Pour qu’ils soient utilisables par rclone, il faut les convertir en une chaîne HTTP standard :

grep '^Set-Cookie3:' ~/icloud-cookies/icloud.com \
  | sed -n 's/Set-Cookie3: *\([^=]*=[^;]*\).*/\1/p' \
  | sed 's/^"\(.*\)"$/\1/' \
  | tr -d '"' \
  | grep -E '^(X-|APPLE-)' \
  | paste -sd\; - \
  > cookies_rclone.txt

Dans certains cas, le cookie X-APPLE-WEBAUTH-VALIDATE contient des caractères d’échappement (\) qui posent problème. Cette commande les corrige :

sed -i 's/\\/"/g' cookies_rclone.txt

Configurer rclone avec les cookies

Dans le fichier ~/.config/rclone/rclone.conf avec la configuration suivante :

1[icloud]
2type = icloud
3apple_id=votre@email.com
4cookies = <contenu du fichier cookies_rclone.txt>
5trust_token = <token reçu par icloudpd>

L’authentification étant déjà gérée, aucune interaction ne sera nécessaire lors du montage.

Monter iCloud Drive

Commencez par créer un point de montage :

sudo mkdir -p /media/$USER/icloud
sudo chown $USER:$USER /media/$USER/icloud

Puis montez iCloud Drive :

rclone mount icloud: /media/$USER/icloud \
  --vfs-cache-mode minimal \
  --daemon

iCloud Drive devient alors accessible comme un simple répertoire local, avec un accès aux fichiers à la demande.

Automatiser le montage avec systemd (utilisateur)

Créez un service systemd dans le répertoire utilisateur :

Fichier ~/.config/systemd/user/rclone-icloud.service :

 1[Unit]
 2Description=Montage iCloud via rclone
 3After=network-online.target
 4
 5[Service]
 6ExecStart=/usr/bin/rclone mount icloud: /media/%u/icloud --vfs-cache-mode minimal
 7Restart=on-failure
 8User=%u
 9
10[Install]
11WantedBy=default.target

Activez le service :

systemctl --user daemon-reload
systemctl --user enable --now rclone-icloud.service

Le montage s’effectuera automatiquement à chaque ouverture de session.

Limitations et remarques

  • Les cookies de session expirent régulièrement. Il est donc nécessaire de relancer périodiquement icloudpd pour en générer de nouveaux.
  • Les performances en écriture peuvent être limitées. iCloud Drive n’est pas conçu comme un système de fichiers local.
  • Cette méthode repose sur des mécanismes non officiels. Toute modification du fonctionnement d’iCloud par Apple peut rendre cette approche obsolète.

Conclusion

L’authentification iCloud via rclone est instable. En passant par icloudpd pour récupérer les cookies, puis en les injectant dans une configuration minimale, on obtient un montage fonctionnel, reproductible, et utilisable en ligne de commande sous Ubuntu.