🇫🇷Installation de Tailscale dans une application Clever Cloud
Depuis quelques mois, l'entreprise pour laquelle je travaille utilise Tailscale comme solution de VPN. Cette dernière est basée sur l'excellent WireGuard, auquel une console d'administration et éditeur d'ACL très facile d'utilisation ont été ajoutés. L'ensemble de leur solution m'a rapidement convaincu de l'utiliser également pour mes autres usages professionnels.
Dans cet article, je vais vous montrer comment intégrer Tailscale à vos applications Clever Cloud. À titre d'exemple, je vais déployer un serveur MQTT, Aedes, une application Node.js. Les clients MQTT communiqueront via Tailscale pour atteindre le broker MQTT. Notez qu'à partir de là, vous ne serez plus limité par le nombre de ports TCP et UDP que vous pourrez utiliser sur vos applications déployées sur l'infrastructure de Clever Cloud ;)
Pour l'intégration de l'agent Tailscale sur la plateforme de Clever Cloud, je me suis basé sur la documentation officielle de l'éditeur détaillant la procédure pour utiliser leur service depuis Heroku.
Il y a des limitations avec cette méthode. Vos différentes machines (PC, Mac, smartphone, VM) pourront joindre vos applications sur Clever Cloud, mais l'inverse ne sera pas toujours possible si vous essayez de joindre un service ne supportant pas SOCKS5 (par exemple PostgreSQL). Pour en savoir davantage, consultez cette documentation. Il est fort possible qu'un jour prochain :-) Clever Cloud proposera nativement l'intégration de l'agent Tailscale dans leurs images et utilisera une interface
tun
pour se connecter au VPN.
PreRequis
Assurez-vous d'avoir installé clever-tools
sur votre workstation: Doc
Tailscale
Nous allons avoir besoin d'un token pour que notre instance Clever Cloud puisse se connecter à notre réseau sur Clever Cloud.
Allez dans le menu Settings de Tailscale
Cliquez sur les options *Reusable et Ephemeral. Validez en cliquant sur Generate Key
Notez bien la clé indiqué, nous l'utiliserons plus loin pour identifier le client Tailscale que votre instance Clever Cloud utilisera lors du déploiement.
Préparation de notre application de test
Première étape, téléchargez le repo git suivant contenant le broker MQTT et basculez sur la branche no-tls :
git clone https://github.com/fredericalix/cc-aedes-mqtt-broker.git
cd cc-aedes-mqtt-broker
git checkout no-tls
Ensuite, nous allons créer l'application sur l'environnement de Clever Cloud, ainsi qu'une base de données Redis que cette dernière utilisera.
clever create cc-aedes --type node --org <YOUR_ORGA_ID> --region par
clever config update --enable-force-https
clever scale --alias cc-aedes --flavor XS
clever addon create redis-addon cc-aedes-db --link cc-aedes --plan s_mono --yes
clever env set PORT 8080
clever env set MQTT_PORT 1883
clever env set MQTT_USER myuser
clever env set MQTT_PASSWORD myuser123
clever env set TSFILE tailscale_1.36.2_amd64.tgz
clever env set TSNODENAME cc-aedes
clever env set TSKEY <YOUR_TAILSCALE_KEY>
clever env set CC_PRE_RUN_HOOK "nohup ./start.sh &"
Lors de la déclaration de TSKEY, utilisez le token que nous avons crée dans l'interface d'administration de Tailscale.
Création du script qui lancera l'agent Tailscale
Créez le fichier start.sh
#!/bin/bash
wget https://pkgs.tailscale.com/stable/${TSFILE}
tar zxf ${TSFILE} --strip-components=1
./tailscaled --tun=userspace-networking --state=mem: --socket=/var/tmp/tailscaled.sock --socks5-server=localhost:1055 &
./tailscale --socket=/var/tmp/tailscaled.sock up --authkey=$TSKEY --hostname=$TSNODENAME
Il est nécessaire de l'ajouter au repo local afin de le déployer.
git add start.sh
git commit -m "Add start.sh script"
Déploiement de l'application
Deployez l'application sur clever cloud
clever deploy
Quelques minutes plus tard, votre application sera en ligne.
À ce moment, elle sera accessible depuis votre réseau Tailscale:
Tests
Un petit ping et puis hop là
Depuis votre machine windows, mac ou gnu/linux, ouvrez un terminal et utilisez la commande ping pour vérifier que le réseau fonctionne.
Votre machine doit, bien entendu, être aussi connécté à votre réseau Tailscale
ping cc-aedes
Pour ce test, je vais utiliser un client MQTT graphique sur macOS (MQTTX) et sur mon iPhone MQTTAnalyzer
Sur mon mac
Connexion
Messages
Sur mon iPhone
Connexion
Messages
Subscribe to my newsletter
Read articles from Frederic Alix directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Frederic Alix
Frederic Alix
Depuis l'âge tendre de six ans, l'informatique a été mon terrain de jeu et, plus tard, elle est devenue ma vocation professionnelle pour plus de 25 ans maintenant. Mon intérêt s'est toujours porté sur le fascinant monde des serveurs informatiques, ce qui m'a amené à déployer des infrastructures robustes pour des entités renommées telles qu'EDF, RTL, RTL2, FunRadio, Axa, Orange, et SFR, parmi tant d'autres. Ma passion réside dans l'optimisation des systèmes Linux et le déploiement d'applications web en Java, Node.js, Go, et au-delà. La supervision des systèmes et des applications occupe également une place spéciale dans mon cœur professionnel, ajoutant une couche supplémentaire de satisfaction à mon quotidien déjà loin de l'ennui. En dehors de mon amour pour la technologie, je suis un fervent lecteur de littérature science-fiction et fantastique. Le cinéma et la musique sont mes compagnons fidèles dans la quête de l'évasion et de l'inspiration. J'apprécie les plaisirs simples de la vie et je chéris chaque opportunité de rencontrer de nouvelles personnes, élargissant ainsi mon cercle d'amis et enrichissant mon parcours de vie avec des échanges enrichissants. Avec chaque projet et chaque interaction, je continue à apprendre et à grandir, cherchant toujours à contribuer et à innover dans l'espace technologique, tout en appréciant les belles nuances de la vie.