Déploiement d'une application TypeScript sur un VPS : guide étape par étape
Vous avez écrit une application géniale en TypeScript. Localement, tout fonctionne parfaitement, mais il est temps de montrer votre projet au monde. Le déploiement sur un VPS (Virtual Private Server) est une étape logique et flexible. Contrairement aux plateformes cloud, un VPS vous donne un contrôle total sur l'environnement.
Dans cet article, nous allons détailler le processus étape par étape pour déployer une application TypeScript sur un VPS. Nous utiliserons Node.js, PM2 pour la gestion des processus et Nginx comme proxy inverse. Tous les exemples sont en TypeScript.
Il est supposé que vous avez des compétences de base avec Linux et SSH.
1. Préparation du serveur et connexion
La première étape est la location d'un VPS (DigitalOcean, Vultr, Timeweb, etc.) et la connexion via SSH.
ssh root@votre_ip_serveurMettons immédiatement à jour les paquets et installons les utilitaires nécessaires :
apt update && apt upgrade -yapt install curl git nginx -yInstallons Node.js (nous recommandons la version LTS) :
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -apt install -y nodejsVérifions les versions :
node -vnpm -v2. Clonage du dépôt et compilation TypeScript
Maintenant, clonons votre projet. Pour l'exemple, nous utiliserons une simple application Express en TypeScript :
git clone https://github.com/votre_nom_utilisateur/votre_depot.gitcd votre_depotInstallons les dépendances :
npm installTypeScript doit être compilé en JavaScript. Cela se fait généralement avec la commande :
npm run buildDans package.json, cela doit être défini comme :
{ "scripts": { "build": "tsc", "start": "node dist/index.js" }}Vérifiez que les fichiers compilés sont apparus dans le dossier dist.
3. Installation et configuration de PM2
PM2 est un gestionnaire de processus pour Node.js. Il redémarre l'application en cas de crash, gère les logs et la mise en cluster.
Installons PM2 globalement :
npm install pm2 -gLançons l'application :
pm2 start dist/index.js --name "my-typescript-app"Sauvegardons la liste des processus pour que PM2 les restaure après un redémarrage du serveur :
pm2 savepm2 startupPM2 affichera une commande à exécuter (généralement systemctl enable pm2-root). Copiez-la et exécutez-la.
Vous pouvez vérifier le statut avec la commande :
pm2 status4. Configuration de Nginx comme proxy inverse
Nginx va recevoir les requêtes sur le port 80 (HTTP) et les rediriger vers votre application (par exemple, sur le port 3000).
Créons un fichier de configuration :
nano /etc/nginx/sites-available/my-typescript-appInsérez le code suivant (modifiez server_name avec votre domaine ou IP) :
server { listen 80; server_name votre_domaine.ru www.votre_domaine.ru;
location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }}Activons le site :
ln -s /etc/nginx/sites-available/my-typescript-app /etc/nginx/sites-enabled/nginx -tsystemctl restart nginxMaintenant, votre application est accessible via l'IP ou le domaine.
5. Configuration HTTPS (SSL) avec Certbot
De nos jours, on ne peut pas se passer de HTTPS. Utilisons Let's Encrypt et Certbot.
Installons Certbot :
apt install certbot python3-certbot-nginx -yLançons l'obtention du certificat :
certbot --nginx -d votre_domaine.ru -d www.votre_domaine.ru```