🇫🇷Installation de Tailscale dans une application Clever Cloud

🇫🇷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