Caldav et Carddav : Pourquoi un accès depuis l’extérieur ?
Nous avons vu dans un article précédent l’intérêt de caldav et carddav pour notre vie digitale et notre organisation. Dans la conclusion, je vous indiquais qu’il fallait étendre l’accès à l’extérieur. En effet, pouvoir alimenter son agenda en mobilité nous ouvre pas mal de possibilités.
Prenons ensemble un petit exemple pour illustrer ces propos.
Je partage un agenda avec ma conjointe pour mieux organiser nos déplacements respectifs. Que ces déplacements soient professionnels comme privés. Ainsi, il nous arrive ainsi de devoir, le même jour, organiser quelques déplacements alors que nous sommes au travail. Chacun d’entre nous met à jour son agenda après avoir vérifier la compatibilité avec celui de l’autre. A ce titre Caldav et Carddav nous sont bien utiles.
Cependant au fil de nos mises à jour sur nos smartphones, il faut conserver le smartphone de l’autre en synchro avec le sien.
Si Caldav et Carddav ne se synchronisent qu’une fois rentrés au domicile : Problème !
Potentiellement, nous devrons renégocier certains déplacements car nous aurons positionné la même journée.
Il nous faut donc imaginer un moyen de synchroniser en temps réel pour éviter ce problème.
La solution
L’idée reste bien sur la même que dans les quelques articles précédents. Une intégration de Caldav et Carddav sur un Nas Synology. Une synchronisation des données sur le smartphone (en démarrant par iOS). Nous allons y ajouter l’accès depuis l’extérieur en transformant l’adresse IP référencée, comme expliqué dans cet article par un nom de domaine.
Je vais vous donner les informations qui correspondent à la solution que j’ai moi-même choisie. D’autres solutions existent, je n’ai pas vocation, ici, à les balayer toutes pour vous donner la meilleure. Je crains d’ailleurs de ne pas en être capable. Chacune de ces solutions présente des avantages et des inconvénients en lien avec les choix, les besoins et les situations de chacun.
Ma solution repose sur le choix de disposer d’un domaine que j’utilise pour nos adresses mails personnelles. Ce domaine est aujourd’hui géré chez OVH, il pourra changer demain. Ce domaine est utilisé pour accéder à divers sous-ensembles du NAS. La solution est également construite pour permettre l’accès depuis un réseau qui filtre les ports exotiques. Ainsi, le flux se présente et voyage encapsulé comme du https sur le port 443. Cela peut, par exemple, permettre de passer depuis un accès wifi pro, depuis celui d’un hôtel etc….
Pour simplifier, nous dirons que le le domaine en question s’appelle mondomaine.fr. Chaque sous-système auquel je veux pouvoir accéder de l’extérieur est ainsi défini comme un sous-domaine de mondomaine.fr. Par exemple, pour accéder à Caldav, nous créons un sous-domaine nommé cal.mondomaine.fr. Dans le paramétrage de l’iPhone ou de l’iPad, nous allons ensuite remplacer l’adresse IP du Nas par le nom du sous-domaine concerné. Il faut réaliser cela pour Caldav et Carddav.
Les pré-requis
Les noms de domaine pour Caldav et Carddav
Première étape :
Disposer de mondomaine.fr, je vous laisse découvrir chez un fournisseur de domaine comment faire. Une fois le domaine créé, j’ai ajouté dans son paramétrage un sous-domaine nas.mondomaine.fr qui pointe vers l’adresse IP fournie par mon FAI. En l’occurence, celui-ci me donne une adresse fixe. C’est donc assez simple avec une directive A qui associe le sous-domaine et l’adresse IP.
Pour ceux qui n’ont pas d’adresse fixe, on peut utiliser un système de DynHost qui va permettre la même chose. Le DynHost sera lui-même modifié à chaque changement d’adresse.
Deuxième étape :
Créer les sous-domaines pour Caldav et Carddav. Nous les nommerons donc :
- cal.mondomaine.fr
- card.mondomaine.fr
On va cette fois créer des synonymes grâce la modification de la zone DNS du domaine et à l’utilisation de CNAME. En premier lieu, un premier CNAME va associer cal.mondomaine.fr à nas.mondomaine.fr et le second fera exactement la même chose pour card.mondomaine.fr.
En onséquence et après un peu de délais pour les mises à jour, Internet sait comment router la demande cal.mondomaine.fr et renvoie les flux vers l’adresse IP que le FAI vous a attribué.
Il nous faut maintenant faire arriver ces flux jusqu’à notre NAS et nos serveurs Caldav et Carddav.
Le paramétrage du routeur ou de la box.
C’est souvent, à première vue, le rôle de l’équipement qui vous relie à Internet d’assurer la redirection des flux. C’est, je crois, ce que l’on appelle le routage NAT. Cette opération consiste à indiquer, en fonction du port détecté, ou le flux de données doit être dirigé. Le routeur ou la box écoute les flux, analyse le port et envoie ce flux vers l’adresse IP de l’équipement de votre réseau local concerné.
Distinguer les adresses IP
Attention, les adresses IP dont on parle doivent être distinguées. Dans la partie précédente, nous parlions d’adresses externes. Celles que votre FAI vous attribue (fixe ou dynamique). Elles proviennent de la connexion de votre box à l’équipement du FAI. A l’opposé, dans cette partie, les adresses IP sont internes à votre réseau local. On peut normalement les trouver en interrogeant les menus de la Box ou du routeur.
Ainsi, je vais indiquer qu’un flux qui m’arrive sur le port 443 (en HTTPS) ou en 80 (HTTP) sera routé vers l’équipement 192.168.1.x. Cette adresse correspond à l’adresse interne de votre NAS dans le réseau. Les ports indiqués sont la pour l’exemple, le principe fonctionne pour tous les ports.
On voit, sur l’illustration ci-dessus, ce routage paramétré chez moi. Le routage est fait pour le port 443 et pour le port 80 en UDP comme en TCP. Le pavé bleu permet d’indiquer le nom que vous choisissez de donner à votre règle de routage. Le pavé violet correspond lui à l’équipement vers lequel vous souhaitez envoyer le flux. En fonction du routeur ou de la box utilisé, ce pavé contiendra le hostname sur le réseau local ou l’adresse IP directement. Enfin les deux zones suivantes montrent le port écouté et le port vers lequel je renvoie. Ainsi le flux reçu en TCP sur le port 443 depuis l’extérieur est envoyé sur le NAS (Ip ou Hostname du bloc violet) sur le port 6443. De la même façon, le flux reçu en TCP sur le port 80 est envoyé cette fois sur le NAS en conservant le port 80.
Nous avons fait un nouveau pas en avant. Les demandes envoyées depuis Internet arrivent jusqu’au NAS. Mais est-ce suffisant ?
Parler avec le bon sous-système
Pas tout à fait, le flux arrive dans le NAS sur un port que nous venons de choisir. Hors Caldav et Carddav écoutent des ports particuliers. Il nous faut nous assurer que les flux arrivent « à bon port ».
Dans mon système, comme indiqué plus tôt, j’encapsule les flux sur le port 443. Ainsi donc, les flux arrivent sur le routeur via le port 443 et sont routés vers le NAS sur le port 6443 (cf paramétrage ci-dessus). Il nous faut maintenant les envoyer vers le bon sous-système entre Caldav et Carddav.
Cette étape démarre par des actions dans les deux onglets du portail d’application du DSM Synology. Celui-ci se trouve dans le panneau de configuration.
Par ailleurs, celui-ci dispose de deux onglets, nous devrons intervenir sur les deux. En effet, le premier onglet permet d’associer un sous-domaine et un port à une application du NAS. Il se nomme tout simplement Applications. Ensuite, le deuxième onglet (Proxy inversé) permet lui d’indiquer les ports écoutés et les sous-systèmes impactés.
Onglet proxy inversé
On va prendre les onglets dans l’autre sens et démarrer par le proxy inversé. Son utilité est proche de ce que l’on vient de faire sur la box ou le routeur … router un flux
L’onglet Proxy inversé va servir à indiquer cette fois-ci le domaine / Port recherché et le port interne vers lequel envoyer le flux. On peut ainsi le faire pour délivrer un accès externe à une grande partie des applications du DSM. Vous pouvez voir ici que j’utilise le système pour Note Station, File Station, Audio Station…
Le paramétrage est simple, après choix du libellé, on renseigne la source et la destination. En fin de compte, j’écoute la source et j’envoie vers la destination.
Onglet Application
Ici nous allons configurer le fait que l’application Calendar de DSM répond au nom de domaine cal.mondomaine.fr et utilise le port 20002 en http et 20003 en HTTPS
Ainsi coté NAS nous avons fait tout le chemin.
Internet -> Domaine -> IP attribuée par le FAI -> Routeur -> Nas -> Application choisie.
Sur mon installation j’ai pris un raccourci pour Carddav que je n’ai pas fait passer par le port 443. J’ai donc pris le port prévu en https par Carddav serveur, et j’ai fait le routage directement. Mais la solution de Caldav doit fonctionner de la même manière.
Adapter le paramétrage de Caldav et Cardav sur IOS
Quel est l’impact de ce paramétrage sur ce que nous avions mis en place coté iOS ?
En fait c’est assez simple. Avec ce modèle, il faut simplement remplacer l’adresse IP par le nom du sous-domaine.
Pour Caldav :
En conclusion
En dernier lieu, il y a deux choses dont je ne parle pas dans cet article et qu’il faudra traiter.
La première repose sur la gestion du https. En effet, pour que cela fonctionne correctement, il faut disposer de certificats qui seront associés aux noms des sous-domaines.
Par exemple, pour caldav, il faut avoir installer sur son NAS un certificat valide correspondant à cal.mondomaine.fr. Je ne détaille pas ici la gestion des certificats. Il faudra surement un article complet pour cela.
La deuxième concerne plutôt ce qu’il est nécessaire de mettre en place afin que la solution fonctionne à la maison comme dehors. Ce fonctionnement est dépendant de votre équipement réseau à la maison. C’est en particulier la gestion du loopback qui est structurante.
J’avais une livebox qui ne gérait pas le loopback, puis je suis passé à un modem + routeur Asus qui le gérait parfaitement pour finalement arriver à un routeur Technicolor qui ne le gère pas …
En bref, nous reviendrons sur ces sujets dans d’autres articles. J’espère que ce billet vous a permis d’avancer dans ces configurations? N’hésitez pas à commenter pour avoir des échanges, questions ou corrections / améliorations éventuelles.
salut Vincent
bon j’ai toujours aimé les vides-greniers et autres brocantes, ça tomber bien 🙂
j’étais déjà venu sur ton site pour la config de calendriers sur mon Syno, et je t’avais même demandé quand tu allais faire le même article pour la synchro depuis l’extérieur.
C’est cool, voici l’article en question ! c’est sûr qu’un dimanche pluvieux comme aujourd’hui ça permet de s’occuper de son NAS 🙂
je l’ai sauvegardé et vais tout relire au calme, mais j’ai (déjà !) tu parles d’OVH pour ton nom de domaine, c’est sérieux comme boîte ? Car moi j’ai pris un nom de domaine chez synology.me (depuis l’interface de DSM) et je vois nulle part de possibilité de créer des sous-domaines que tu évoques dans ton article, cal.mondomaine.fr et un autre pour card.
Alors je me dis que si le mien en synology.me est gratuit et si le tien en OVH est payant, il doit bien y avoir des raisons…
non ?
fred
Bonjour Fred
Merci pour ton commentaire. Et oui la pluie m’a donné le courage 🙂
En ce qui concerne OVH, Je suis client depuis de nombreuses années. J’ai toujours été satisfait. Je trouve qu’ils sont à la fois peu chers (Mais pas gratuits) et avec une approche très passionnée (De geek diraient certains). Enfin j’apprécie leur vision autour de la neutralité du net.
Toutefois tu as raison c’est payant même si peu cher car pour un domaine, on doit tourner autour de 15-20€ l’an.
Synology.me est à la fois le nom de domaine et le dynhost que j’évoque dans l’article. C’est donc fort utile si ton FAI ne te donne pas d’adresse fixe. Je ne l’ai jamais utilisé, mais j’ai cru comprendre que que le routage était identique entre (par exemple) fred.synology.me et cal.fred.synology.me (tout est envoyé vers la même adresse IP).
Du coup le reste de l’article doit s’appliquer ?
N’hésite à nous dire si cela fonctionne bien pour toi!
Sinon la différence entre gratuit et payant peut avoir plusieurs raisons. Ici le prix n’est pas forcément synonyme de qualité inférieure. Synology.me est gratuit car fourni comme service pour un client ayant déjà payé le NAS …
Vincent
hello Vincent
ben ça marche pas… J’ai indiqué mon ndd en synology.me dans le proxy inversé comme tu l’indiques, mais je comprends pas ton port 6443……… il sort d’où ? C’est toi qui a décidé que ça serait sur ce port que le calendrier serait accessible ? Moi j’ai ouvert plein de ports dans ma livebox, pas celui-là mais plein qui ont à voir avec caldav, 20002, 20003, 8008, 8443, 38443.
Mais y’a vraiment un truc qui m’échappe, car sur l’iphone, autant j’arrive à faire la synchro en local, autant depuis l’extérieur j’arrive pas sur l’iphone à paramétrer le compte caldav avec mon adresse en synology.me.
J’ai pourtant fait des règles dans le pare-feu, mais je dois louper un truc…
J’ai ouvert un ticket chez Syno mais pour l’instant les réponses, eh ben elles me font encore plus me sentir nul
j’ai oublié aussi ça : dans la capture d’écran de l’onglet « applications » (dans le portail des applications), je n’ai pas la même chose que toi car je vois pas où je peux rentrer mon nom de domaine en synology.me.
Le problème vient peut-être aussi de là ?
salut Vincent
ça marche 🙂 j’ai cherché, j’ai relu 363 fois ton tuto, j’ai lu ici ou là des trucs, et ça marche. Sur l’iphone en extérieur. Sur le mac, j’y arrive pas mais c’est beaucoup moins grave.
Merci 🙂
fred
Bonjour Fred
Ravi que ça marche, n’hésite pas à m’indiquer ce qui n’était pas clair. Je le corrigerais ça pourra toujours servir 🙂
En ce qui concerne le Mac, un autre article détaillera ce qu’il faut faire … mais quand j’aurais trouvé ! Ca ne marche toujours pas sur mon Mac !
Je vais d’abord expliquer comment faire sur Android.
Vincent
non t’inquiète Vincent, c’est pas que c’était confus, c’est simplement que je me suis emmêlé les pinceaux entre les domaines et les sous-domaines, et puis tu donnais comme exemple la création de 2 sous-domaines et moi j’en voulais qu’un en gros donc ça me laissait perplexe. Bref j’ai fini par tout effacer car ça marchait pas une fois revenu dans DSM, et j’ai recommencé à zéro en créant un seul sous-domaine donc en mettant une *, et j’ai finalement réussi.
Du coup suis allé voir sur mac, et là effectivement j’y arrive pas, aussi bien en mode manuel qu’en mode avancé. Je vais continuer à chercher !
En tous cas j’espère que tu continueras à poster des tutos comme ceux-là, c’est top ! Tu parles de la gestion des certif eh bien j’ai justement un problème avec celui que j’ai créé via DSM auprès de Let’s Encrypt. Il est validé et tout, installé dans DSM, mais quand je me connecte en local, j’ai le cadenas pas vert du tout dans mon navigateur, et plutôt rouge avec la mention « non sécurisé » qui apparaît… Bizarre !
@Fred
Hello
Suite de la saga Caldav et Carddav ce jour avec la mise en place sous Android. Mais au vu de ce que tu as installé et du problème pour le Mac (toujours pas résolu chez moi) … tu ne dois pas être trop concerné
hello Vincent ça va ?
oui j’ai vu ça ce matin, mais j’ai pas d’Android 🙂 Pour le mac, j’ai pas eu le temps de fouiller après avoir pas réussi la première fois, je vais regarder ça sans doute ce week-end et je viendrai te dire si je trouve 🙂
Une petite question de newbie: si tu perds ta connexion internet, comment se fait la synchro? Tu bascules sur quelle solution de secours?
Merci de ta réponde
Bonjour
Désolé de la réponse tardive, pas de solution de secours.
Si la connexion internet est perdue (ex plus de 4g, ou chute de l’ADSL chez moi) dés que celle ci revient la connexion remonte avec les outils (iOS directement ou avec Davdroid sur Android) et la synchro se fait avec du retard mais toutes les mises à jours sont bien reportées.
Cela marche même au delà de la connexion, par ex la montée en DSM 6.2 avait cassé le paquet Calendar qui ne s’exécutait plus et donc la synchro CALDAV ne fonctionnait plus.
J’ai relancé (après mise à jour le paquet et dans l’heure qui suivait tout était à nouveau synchronisé)
Dans le cadre personnel cela ne me pose aucun soucis, si c’est dans un cadre pro avec par exemple toi qui prends des RDV en mobilité et une assistante qui le fait en même temps c’est un peu plus complexe … mais du coup ce n’est surement pas tout à fait la bonne solution
Bonjour, super votre article sur CalDav et CardDav.Pour aller plus loin il existe le connecteur https://caldavsynchronizer.org/ qui vous permet une intégration du calendrier dans outlook. Facile pour encoder un agenda commun sur une machine »outlook » dans son réseau local vers le syno (en local).Configurer les devices caldav pour pointer vers le domaine https://nomdomaine:5006/web/calender_common par ex. Mise a jour du calendrier dès qu’il y a un accès 4G, wi-fi externe… Pour éviter le souci des sous domaines, un seul suffit et celui de synology (gratuit) avec le certificat Let’sEncrypt (tous les deux fournit par SYNOLOGY et gratuits) il suffit de créer 2 réseaux différents chez soi HOME (local sur lequel est le SYNO le standard fournit avec votre FAI) et PUBLIC passant par un routeur PFSENSE donc une autre adresse ip externe (un vieux pc et 2 cartes réseau feront l’affaire).