I) Mise en place de la Gandi API
Pour cette partie, je vous conseille déjà de suivre mon premier article sur la mise en place d’un nom de domaine avec la Gandi API. En effet, avant de comprendre dans la généralité ce qu’est la Gandi API et comment l’on va organiser cela, il vaut mieux déjà avoir vu le cas particulier de mon premier article. Une fois cela fait, supprimer le dossier /Volume1/homes/admin/gandyn, s’il existe, si vous avez suivi le premier article en entier. Pensez donc à sauvegarder votre apikey avant toute chose pour éviter d’avoir à la chercher !! 🙂 Je pense que permettre à votre client d’accéder à la Gandi API est une très mauvaise chose.. C’est pourquoi il vous faudra séparer récupération de l’ip sur le serveur et la mise à jour de cette derniers dans les zones dns. Tout se passera dans le dossier admin qui devra être bien entendu sécuriséchmod -R 711 /volume1/homes/adminA présent, il va falloir lancer les commandes suivantes, pour installer la nouvelle api généralisée :
cd /volume1/homes/admin/ wget http://partage.leblogdekzl.fr/syno/apigandi/apigandi_service.zip && unzip apigandi_service.zip chmod -R 755 apigandi_service && chown -R admin:users apigandi_service mv apigandi_service apigandiUne fois cela fait, rentrez dans le dossier. Vous y trouverez :
- un fichier apikey, où mettre votre clef
- un fichier maindomain, où mettre votre nom de domaine (expl : leblogdekzl.fr à mettre dans maindomain)
- un fichier update_api, qui exécute tour à tour les dossiers clients et votre dossier principal
- un dossier my_domain, qui est la structure gandyn permettant de mettre à jour UNIQUEMENT votre domaine principal. Ce dossier est à renommer du nom mis dans le fichier maindomain (dans mon expl leblogdekzl.fr)
II) Création de l’utilisateur sur votre serveur
Un utilisateur, client du service de ddns, devra être créé. Ainsi qu’un groupe spécial. Chez moi, le groupe s’appelle network, pour qu’ils aient un status spécial par rapport aux autres membres !! Si jamais un virtualhost existe déjà avec le même nom que votre client, le virtualhost sera surplanté par votre client. C’est pourquoi l’utilisateur ne pourra pas choisir n’importe quel nom et c’est donc à vous de l’autoriser ou le changer si nécessaire ! Une fois l’utilisateur créé sur votre serveur, il faut que vous ajoutiez une entrée dans le fichier de zone de votre compte gandisous-domain 300 IN A 1.2.3.4Sinon vous aurez une erreur du type :
Et lancez le script ./update_api pour être sûr que tout fonctionne ! N’hésitez pas à regarder votre fichier de zone et les logs de chaque utilisateur du service dans le dossier <user>/logs/gandyn.logTraceback (most recent call last):
File "src/gandyn.py", line 160, in <module>
main(sys.argv, globals(), locals())
File "src/gandyn.py", line 142, in main
previous_ip_address = gandi_updater.get_record_value()
File "src/gandyn.py", line 53, in get_record_value
)[0][‘value’]
IndexError: list index out of range
III) Création du lien client-serveur
À présent, l’idée est simple. Créer un lien entre votre serveur et celui de la personne dont l’IP est dynamique. Pour cela, il faudra donc préparer le serveur distant, ainsi que le votre.- Créer une paire ssh sur le serveur distant pour se passer de l’authentification par mot de passe.
- Autoriser la clef ssh sur votre serveur
- Envoyer l’ip courante du serveur distant au votre, régulièrement. (expl : vérification toutes les heures, puis envoie si nécessaire)
apt-get install crontab scp crontab -e # et ajouter la commande "0 */1 * * * ~/update_ddns"Une fois cela fait le serveur distant vous fournira son adresse ip actuelle dans le fichier /volume1/homes/<user>/extip. Il ne vous reste plus qu’à créer le dossier pour votre nouvel utilisateur dans /volume1/homes/admin/apigandi. Ce que nous allons voir dès à présent !! 🙂
IV) Finalisation de l’installation du service
a. Mise en place d’un nouveau client
Pour ce faire lancez simplement les commandes suivantes, pour chaque nouvel utilisateur : cd /volume1/homes/admin wget http://partage.leblogdekzl.fr/syno/apigandi/apigandi_client.zip && unzip apigandi_client.zip chmod -R 755 apigandi_client && chown -R admin:users apigandi_client Commencez par changer le nom du dossier "apigandi_client" par le nom de l’utilisateur nouvellement créé. Puis entrez dans le dossier et modifier le fichier subdomain, en indiquant le nom du sous-domaine que vous voulez utiliser (uniquement le sous-domaine : machin.leblogdekzl.fr -> machin à mettre dans le fichier subdomain).b. Automatisation des requêtes gandyn
Le script-shell ‘update_api’ va chercher les dossiers de chaque client dans /volume1/homes/admin/apigandi/ et lancer la mise à jour de leur ip dans le fichier de zones. Ce script permet de n’avoir à écrire qu’une crontab sur l’interface du DSM (perso j’ai opté pour un update toutes les 4 heures) et la voici en image ! 🙂