Tutorial

Comment mettre en place la plateforme cloud IDE de code-server sur Ubuntu [18.04 Quickstart]

NginxLet's EncryptQuickstartUbuntu 18.04VS Code

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

  • Un serveur fonctionnant sous Ubuntu 18.04 avec au moins 2 Go de RAM, un accès root, et un compte sudo, non root. Vous pouvez le configurer en suivant le Guide de configuration initiale du serveur pour Ubuntu 18.04.

  • Nginx installé sur votre serveur. Pour obtenir un guide sur la façon de procéder, suivez les étapes 1 à 4 de Comment installer Nginx sous Ubuntu 18.04.

  • 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 à DigitalOcean DNS 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 https://github.com/cdr/code-server/releases/download/2.1692-vsc1.39.2/code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz

Déballez les archives :

  • tar -xzvf code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz

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

  • cd code-server2.1692-vsc1.39.2-linux-x86_64

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 :

/lib/systemd/system/code-server.service
[Unit]
Description=code-server
After=nginx.service

[Service]
Type=simple
Environment=PASSWORD=your_password
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 à :

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 :

/etc/nginx/sites-available/code-server.conf
server {
    listen 80;
    listen [::]:80;

    server_name code-server.your_domain;

    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 :

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 :

Output
Rule added Rule added (v6)

Rechargez-le pour que la configuration prenne effet :

  • sudo ufw reload

Le résultat sera :

Output
Firewall reloaded

Accédez à votre domaine de code-server.

invite de connexion à code-server

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

Interface graphique code-server

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 code-server.your_domain

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 :

Output
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/code-server.your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/code-server.your_domain/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.

Creative Commons License