Guide de déploiement

Déployer une application Astro sur un VPS

Déployer sur un VPS Cloud →

Développement3 min de lecture

Déployer une application Astro sur un VPS

Astro génère par défaut un site entièrement statique — rien à exécuter à chaque visite — mais sait aussi rendre des pages côté serveur via son adaptateur Node. Selon votre besoin, vous servez de simples fichiers HTML ou un vrai serveur SSR. Voici les deux approches sur un VPS, avec reverse proxy et cache.

Pourquoi self-héberger Astro sur un VPS

Astro a une particularité : il peut produire soit un site 100 % statique (output: 'static'), soit une application avec rendu serveur à la demande (output: 'server' via @astrojs/node). Cette dualité rend le VPS très pertinent. En statique, vous servez directement des fichiers HTML depuis Nginx, sans aucun processus Node : performances maximales et empreinte minimale. En SSR, vous lancez un serveur Node qui rend les pages dynamiquement, utile pour des contenus personnalisés ou des endpoints API intégrés. Sur un VPS, vous choisissez votre stratégie sans être enfermé dans le modèle imposé par une plateforme de déploiement front. Vous contrôlez aussi le cache HTTP, les en-têtes de sécurité et la compression Brotli, là où les hébergements front gèrent ça en boîte noire.

Bénéfices concrets

  • Liberté du mode de sortie : statique pur ou SSR Node, voire hybride par route
  • En statique, Nginx sert les fichiers sans aucun processus Node : rien à exécuter par requête
  • Maîtrise totale du cache HTTP, des en-têtes de sécurité (CSP, HSTS) et de la compression Brotli
  • Pas de limite de bande passante ni de quota de requêtes imposé par une plateforme front
  • Endpoints API d'Astro hébergés sur le même domaine, sans fonction serverless tierce
  • Déploiement reproductible via Docker : le même build local et en production

Prérequis matériels et logiciels

Un site Astro statique tient sur le plus petit VPS imaginable : 1 vCPU et 1 Go de RAM suffisent largement, car Nginx ne fait que servir des fichiers. En mode SSR, prévoyez 2 Go pour le processus Node et les pics de rendu. Installez Node.js 20 LTS pour builder (ou buildez en CI), Docker si vous conteneurisez, et Nginx comme frontal. Pointez mondomaine.com et www.mondomaine.com vers l'IP du VPS. Comptez 5 Go de disque ; le dossier dist/ d'un site statique pèse généralement quelques Mo.

Déploiement pas à pas

01

Choisir le mode de sortie

Dans astro.config.mjs, définissez output: 'static' pour un site de contenu, ou output: 'server' avec adapter: node({ mode: 'standalone' }) si vous avez besoin de SSR. Ce choix conditionne toute la suite du déploiement.

02

Builder l'application

Lancez npm run build. En statique, vous obtenez un dossier dist/ contenant le HTML, le CSS et le JS prêts à servir. En SSR, vous obtenez en plus un dist/server/entry.mjs à exécuter avec Node.

03

Servir le statique avec Nginx (mode statique)

Pointez la directive root de votre vhost vers /var/www/astro/dist et activez try_files $uri $uri/ /404.html;. Ajoutez gzip on; et des en-têtes Cache-Control longs sur les assets versionnés. Aucun conteneur n'est nécessaire.

04

Conteneuriser le serveur Node (mode SSR)

Pour le SSR, créez un Dockerfile basé sur node:20-alpine qui copie dist/ et lance node ./dist/server/entry.mjs. Exposez le port 4321 et démarrez avec docker compose up -d. Nginx fera ensuite un proxy_pass vers ce port.

05

Configurer le reverse proxy et la compression

Que vous soyez en statique ou en SSR derrière Node, déclarez le vhost Nginx avec www redirigé vers le domaine apex. Activez Brotli si le module est disponible pour des assets encore plus légers que gzip.

06

Activer le SSL

Exécutez certbot --nginx -d mondomaine.com -d www.mondomaine.com. Forcez la redirection vers HTTPS et ajoutez l'en-tête Strict-Transport-Security. Validez le déploiement avec un test Lighthouse depuis votre navigateur.

Même pour un site SSR, exploitez le rendu hybride d'Astro : marquez les pages statiques avec export const prerender = true pour qu'elles soient générées au build et servies directement par Nginx, en ne réservant le processus Node qu'aux routes réellement dynamiques. Vous réduisez ainsi drastiquement la charge serveur. Et placez un cache proxy_cache Nginx devant les pages SSR à faible fréquence de changement pour absorber les pics de trafic.

Déployer Astro en un clic depuis le Marketplace

Le Marketplace ServOrbit propose un template Astro Stack qui configure automatiquement Node.js LTS, PM2 et Nginx sur votre VPS. En quelques minutes, votre environnement de production est prêt à accueillir votre application Astro — en mode statique comme en SSR — sans configuration manuelle.

Comparé à l'installation décrite dans ce guide, le template gère la mise en place initiale et vous permet de démarrer directement à l'étape « buildez votre application et transférez-la ».

Votre environnement Astro prêt en quelques minutes

Le template Astro Stack configure automatiquement Node.js LTS, PM2 et Nginx — prêt à accueillir votre application Astro en mode statique ou SSR.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.