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
icloudpdpour 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.