Introduction

code-server est un code Microsoft Visual Studio fonctionnant sur un serveur distant et accessible directement depuis votre navigateur. Cela signifie que vous pouvez utiliser divers appareils, faire fonctionner différents systèmes d'exploitation et toujours disposer d'un environnement de développement cohérent.

Dans ce tutoriel, vous allez configurer la plateforme cloud IDE de code-server sur votre machine Ubuntu 18.04 et l'exposer à votre domaine, sécurisé avec Let's Encrypt. Pour consulter une version plus détaillée de ce tutoriel, veuillez vous référer à Comment mettre en place la plateforme IDE de code-server en nuage sur Ubuntu 18.04.

Conditions préalables

code-server illustration for: Conditions préalables
  • Un nom de domaine entièrement enregistré pour héberger code-server, pointé vers votre serveur. Ce tutoriel utilisera <^>code-server.your-domain<^> tout au long du cours. Vous pouvez acheter un nom de domaine sur Namecheap, en obtenir un gratuitement sur Freenom, ou utiliser le bureau d'enregistrement de domaine de votre choix.
  • Les deux enregistrements DNS suivants ont été configurés pour votre serveur. Vous pouvez suivre cette introduction à DNS hosting pour savoir comment les ajouter.
  • Un enregistrement A avec <^>your-domain<^> pointant à l'adresse IP publique de votre serveur.
  • Un enregistrement A avec <^>your-domain<^> pointant à l'adresse IP publique de votre serveur.

Étape 1 - Installez code-server

Créez le répertoire de stockage de toutes les données pour code-server :

				
					
mkdir ~/code-server

				
			

Naviguez jusqu'à lui :

				
					
cd ~/code-server

				
			

Visitez la page des versions Github de code-server et choisissez la dernière version de Linux. Téléchargez-le en utilisant :

				
					
wget &lt;^&gt;https://github.com/cdr/code-server/releases/download/2.1692-vsc1.39.2/code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz&lt;^&gt;

				
			

Déballez les archives :

				
					
tar -xzvf &lt;^&gt;code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz&lt;^&gt;

				
			

Naviguez jusqu'au répertoire contenant l'exécutable de code-server :

				
					
cd &lt;^&gt;code-server2.1692-vsc1.39.2-linux-x86_64&lt;^&gt;

				
			

Pour accéder à l'exécutable de code-server sur votre système, copiez-le avec :

				
					
sudo cp code-server /usr/local/bin

				
			

Créez un dossier pour code-server afin de stocker les données de l'utilisateur :

				
					
sudo mkdir /var/lib/code-server

				
			

Créez un service systemd, code-server.service, dans le répertoire /lib/systemd/system :

				
					
sudo nano /lib/systemd/system/code-server.service

				
			

Ajoutez les lignes suivantes :

				
					
[label /lib/systemd/system/code-server.service]

[Unit]

Description=code-server

After=nginx.service



[Service]

Type=simple

Environment=PASSWORD=&lt;^&gt;your_password&lt;^&gt;

ExecStart=/usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password

Restart=always



[Install]

WantedBy=multi-user.target

				
			
  • --host 127.0.0.1 le lie à localhost.
  • --user-data-dir /var/lib/code-server définit son répertoire de données utilisateur.
  • --auth password précise qu'il doit authentifier les visiteurs avec un mot de passe.

N'oubliez pas de remplacer <^>your_password<^> par le mot de passe de votre choix.

Enregistrez et fermez le fichier.

Démarrez code-server :

				
					
sudo systemctl start code-server

				
			

Vérifiez qu'il est correctement démarré :

				
					
sudo systemctl status code-server

				
			

Vous verrez un résultat similaire à :

				
					
[secondary_label Output]

● code-server.service - code-server

   Loaded: loaded (/lib/systemd/system/code-server.service; disabled; vendor preset: enabled)

   Active: active (running) since Mon 2019-12-09 20:07:28 UTC; 4s ago

 Main PID: 5216 (code-server)

    Tasks: 23 (limit: 2362)

   CGroup: /system.slice/code-server.service

           ├─5216 /usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password

           └─5240 /usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password

...

				
			

Activez code-server pour qu'il démarre automatiquement après un redémarrage du serveur :

				
					
sudo systemctl enable code-server

				
			

Étape 2 - Exposez code-server

Vous allez maintenant configurer Nginx comme proxy inverse pour code-server.

Créez code-server.conf pour stocker la configuration permettant d'exposer code-server à votre domaine :

				
					
sudo nano /etc/nginx/sites-available/code-server.conf

				
			

Ajoutez les lignes suivantes pour configurer votre bloc serveur avec les directives nécessaires :

				
					
[label /etc/nginx/sites-available/code-server.conf]

server {

	listen 80;

	listen [::]:80;



	server_name &lt;^&gt;code-server.your_domain&lt;^&gt;;



	location / {

		proxy_pass http://localhost:8080/;

		proxy_set_header Upgrade $http_upgrade;

		proxy_set_header Connection upgrade;

		proxy_set_header Accept-Encoding gzip;

	}

}

				
			

Remplacez <^>code-server.your_domain<^> par le domaine souhaité, puis enregistrez et fermez le fichier.

Pour rendre cette configuration du site active, créez un lien symbolique de celle-ci :

				
					
sudo ln -s /etc/nginx/sites-available/code-server.conf /etc/nginx/sites-enabled/code-server.conf

				
			

Testez la validité de la configuration :

				
					
sudo nginx -t

				
			

Vous verrez la sortie suivante :

				
					
[secondary_label Output]

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

				
			

Pour que la configuration prenne effet, redémarrez Nginx :

				
					
sudo systemctl restart nginx

				
			

Étape 3 - Sécurisez votre domaine

Vous allez maintenant sécuriser votre domaine à l'aide d'un certificat Let's Encrypt TLS

Ajoutez le dépôt de paquets Certbot à votre serveur :

				
					
sudo add-apt-repository ppa:certbot/certbot

				
			

Installez Certbot et son plugin Nginx :

				
					
sudo apt install python-certbot-nginx

				
			

Configurez l'ufw pour qu'il accepte le trafic crypté :

				
					
sudo ufw allow https

				
			

Le résultat sera :

				
					
[secondary_label Output]

Rule added

Rule added (v6)

				
			

Rechargez-le pour que la configuration prenne effet :

				
					
sudo ufw reload

				
			

Le résultat sera :

				
					
[secondary_label Output]

Firewall reloaded

				
			

Accédez à votre domaine de code-server.

Entrez votre mot de passe de code-server. Vous verrez l'interface exposée sur votre domaine.

Pour la sécuriser, installez un certificat Let's Encrypt TLS en utilisant Certbot.

Demandez un certificat pour votre domaine avec :

				
					
sudo certbot --nginx -d &lt;^&gt;code-server.your_domain&lt;^&gt;

				
			

Fournissez une adresse électronique pour les avis urgents, acceptez les conditions de service du FEP et décidez si vous souhaitez rediriger tout le trafic HTTP vers HTTPS.

Le résultat sera similaire à celui-ci :

				
					
[secondary_label Output]

IMPORTANT NOTES:

 - Congratulations! Your certificate and chain have been saved at:

   /etc/letsencrypt/live/&lt;^&gt;code-server.your_domain&lt;^&gt;/fullchain.pem

   Your key file has been saved at:

   /etc/letsencrypt/live/&lt;^&gt;code-server.your_domain&lt;^&gt;/privkey.pem

   Your cert will expire on ... To obtain a new or tweaked

   version of this certificate in the future, simply run certbot again

   with the "certonly" option. To non-interactively renew *all* of

   your certificates, run "certbot renew"

...

				
			

Certbot a généré avec succès des certificats TLS et les a appliqués à la configuration Nginx de votre domaine.

Conclusion

Vous disposez maintenant d'un code-server, d'un IDE cloud polyvalent, installé sur votre serveur Ubuntu 18.04, exposé à votre domaine et sécurisé à l'aide de certificats Let's Encrypt. Pour plus d'informations, consultez la documentation sur le code de Visual Studio pour accéder à des fonctionnalités supplémentaires et à des instructions détaillées sur les autres composants de code-server.