~

Nextcloud, contacts, synchronisation iOS et export

Récemment, j’ai voulu me monter une instance Nextcloud pour faire quelques expérimentations, en particulier avec l’application interne de gestion de contacts.

La partie Docker étant bien documentée, et comme mes besoins étaient limités, je savais que j’allais partir sur une BDD SQLite, j’étais donc plutôt confiant sur le temps que ça allait me prendre : quinze minutes max pour avoir quelque-chose qui tourne et accessible depuis Internet.

Évidemment, je me trompais lourdement.

Le lancement du container s’est passé sans aucun problème, en deux minutes j’avais créé mon compte et j’avais lancé l’import de mon fichier vCard.
Et clairement à la première connexion j’ai été agréablement surpris.

Dans mon esprit Nextcloud c’était la même chose que ownCloud que j’avais testé vers 2012, et c’était pour ainsi dire : pas la joie. L’interface donnait envie de crever dans une combo-box, les fonctions étaient très limitées et ce n’était absolument pas réactif.

Là, Nextcloud c’est moderne, ça réagit immédiatement, il y a des dizaines de fonctionnalités de base… Bref ça fait pro !

Maintenant, pour rendre l’instance accessible par Internet, premier obstacle : il faut modifier config/config.php pour ajouter le nom de domaine utilisé dans le tableau trusted_domains.

Clic, clac, boum; c’est fait, ça marche.

Entre temps, j’avais récupéré un certificat SSL et fait la bonne configuration via Nginx Proxy Manager.

La prochaine étape : configurer mon iPhone pour synchroniser mon carnet d’adresses Nextcloud.

Une documentation officielle est fournie mais, évidemment, ça ne fonctionne pas. J’obtiens le message

Connexion impossible avec SSL
Voulez-vous tenter de configurer le compte sans SSL ?

Et si je choisis Continuer alors j’obtiens l’erreur

Compte Contacts
La vérification du compte CardDAV a échoué

Super…

Nextcloud et contacts iOS

En fouillant l’Internet, et après différents tests, je finis par dénicher la solution sur le forum officiel que voici traduite et explicitée :

Sur l’iPhone (l’appareil iOS en réalité, c’est pareil sur un iPad), ouvrir Réglages -> Contacts -> Comptes -> Ajouter un compte -> Autre -> Ajouter un compte CardDAV

Puis saisir les informations suivantes[1] :

Serveur : https://nextcloud.domain.tld:443/remote.php/dav/principals/users/MON_LOGIN_NEXTCLOUD
Nom d’utilisateur : MON_LOGIN_NEXTCLOUD
Mot de passe : Mot de passe du compte MON_LOGIN_NEXTCLOUD
Description : Laisser comme tel ou personnaliser, ça n’a pas d’importance

Valider. Voilà, tout devrait bien se passer.

Pour le calendrier c’est la même chose sauf qu’il faut choisir Ajouter un compte CalDAV au lieu de Ajouter un compte CardDAV.

Les informations à saisir sont exactement les mêmes.

Export contacts Nextcloud

Une fois que j’avais réussi à synchroniser les contacts sur mon iPhone, j’ai voulu tester la fonction d’export des contacts, pour m’assurer que les photos étaient bien inclues dans le fichier vCard.

Mes précédentes louanges vis à vis de la nouvelle interface sont alors tombées à l’eau car je n’ai pas réussi à trouver comment procéder. Et pour cause, un bug graphique masquait le menu permettant de réaliser l’action. En vidant le cache c’est revenu dans l’ordre mais malgré cela, je trouve que ce n’est pas intuitif.

Pour procéder il faut ouvrir l’application Contacts de Nextcloud, cliquer sur Paramètres en bas à gauche puis, à droite du carnet d’adresses que l’on veut exporter, cliquer sur les trois petits points puis Télécharger. On sera alors invité à enregistrer le fichier .vcf correspondant.

Avant cela, j’avais trouvé comment réaliser la même chose en exploitant directement l’API; ce qui peut être intéressant pour automatiser la tâche :

https://nextcloud.domain.tld/remote.php/dav/addressbooks/users/MON_LOGIN_NEXTCLOUD/contacts?export

Bonus FOSS

Mais ce n’est pas fini !

Car lorsque j’essayais de résoudre les problèmes que je rencontrais, je tombais sur deux anomalies évidentes dans l’application.
La première, j’ai pu la corriger et faire une pull request tandis que pour la seconde, trop spécifique aux technologies employées par le projet, je me suis contenté de créer une nouvelle issue.

Résultat, ce qui devait être une formalité s’est transformé en une galère qui m’a pris pas loin de trois heures de ma journée.

Les joies de l’informatique.


[1]: Il est admis ici que l’instance Nextcloud est directement accessible sur le domaine nextcloud.domain.tld. Si l’instance est accessible dans un sous-répertoire, il faudra le spécifier après le port et avant remote.php.