Déployer Next.js sans VPS : Railway, Render ou Droplet

Déployer Next.js sans VPS : Railway, Render ou Droplet

Évitez SSH et nginx pour un side project Next.js. Comparez Railway, Render, Vercel et un VPS, puis déployez depuis Git après avoir minifié les assets dans le navigateur.

18.09.2026
8 min de lecture
Partager cet article:
Next.jsRailwayHébergementDevOpsTutoriel

L'app est finie. Il manque une URL.

Un next dev local n'est pas la production. Louer un VPS, c'est SSH, un gestionnaire de processus, le TLS et une nuit passée sur nginx. Pour beaucoup de projets personnels, il suffit de Git en entrée et de HTTPS en sortie, ce que fait un PaaS comme Heroku. Ce guide compare cette voie (exemple suivi : Railway) avec Vercel, Render et un Droplet classique, pour héberger une application Next.js sans devenir administrateur système.

Une URL HTTPS publique sans administrer un serveur Linux
Des déploiements depuis Git plutôt que scp et systemd à la main
PaaS, Vercel ou VPS, selon ce que vous allez vraiment faire
Minifier le JS et le CSS, et passer les Dockerfiles au linter, dans le navigateur avant de livrer
Des alternatives à Railway, qui n'est pas le seul PaaS

Quand le VPS est du travail en trop

Ce qu'un PaaS enlève vraiment

Une plateforme construit l'application depuis votre dépôt, lance le processus, assure le TLS et redémarre en cas de plantage. Vous gardez les variables d'environnement, la facture et le niveau de maturité de l'application. Vous n'avez plus Ubuntu à mettre à jour.

Améliorations

Plus de ballet de clés SSH pour une démo du week-end
Des URL de prévisualisation par branche sur la plupart des PaaS
Une facture à l'usage plutôt qu'un Droplet oublié, allumé tous les mois
Un projet peut regrouper l'application Next.js, un worker et une petite base de données
Ce qu'il n'enlève pas

Il faut toujours minifier et compresser les ressources, garder les secrets hors de Git et surveiller les Core Web Vitals. Avec next start, Next.js compresse déjà les réponses en gzip par défaut ; pour Brotli ou un CDN, consultez notre guide sur gzip et Brotli côté serveur d'origine. Un PaaS vous évite seulement d'écrire le bloc nginx.

Bénéfices SEO

Le TTFB dépend encore de l'application et de la région, pas du logo affiché sur le tableau de bord
Le JS et le CSS minifiés réduisent toujours le poids transféré, et un PaaS ne fait pas de tree shaking à votre place
Un petit VPS peut battre un cold start serverless : mesurez, ne supposez pas

Envoyer une app Next.js sur Railway depuis Git

Chemin minimal (sans Dockerfile)

Railway construit votre dépôt avec Railpack par défaut (Nixpacks reste pris en charge) et lance le script start de package.json : une application Next.js standard n'exige donc aucune configuration. Connecter un dépôt GitHub est le plus simple. Le lien d'invitation ci-dessus ajoute actuellement 20 $ de crédits pour vous à l'inscription. C'est l'offre de Railway, pas un coupon FastMinify, et le montant peut changer.

1. Un dépôt qui se compile tout seul

Vérifiez que package.json contient les scripts build et start (next build et next start pour une application standard) et que le lockfile est versionné. Ne versionnez aucun secret dans .env et définissez les variables dans l'interface de Railway.

2. Créer le projet depuis GitHub

Dans Railway, créez un projet depuis GitHub et choisissez le dépôt. Le premier déploiement échoue souvent faute d'une variable d'environnement, ce qui est normal. Ajoutez DATABASE_URL ou vos clés d'API, puis redéployez.

3. Domaine généré, puis le vôtre

Utilisez l'URL générée *.up.railway.app pour vérifier que l'application démarre. Ajoutez ensuite votre propre domaine. Railway émet le certificat TLS pour vous.

4. Lire la première facture, pas la capture du tableau de bord

À la date de rédaction, le forfait Hobby coûte 5 $ par mois et inclut 5 $ d'utilisation ; Pro coûte 20 $ et en inclut 20. Au-delà, le CPU, la RAM et le trafic sortant sont facturés à l'usage, et un service arrêté ne consomme ni CPU ni RAM. Lisez la page des tarifs de Railway avant de laisser tourner un gros processus Node jour et nuit.

Checklist

Le script start fonctionne en local avec NODE_ENV=production
Les variables d'environnement sont définies sur le service, pas en dur dans le Dockerfile
Le processus écoute la variable PORT injectée par Railway
N'ajoutez pas le fichier .env à Git ; vérifiez sa syntaxe avec le validateur ENV en ligne si besoin
Quand un Dockerfile est utile

Un Dockerfile s'impose quand Railpack se trompe, qu'il manque un paquet système ou que l'image fait déjà foi. Analysez-le dans le navigateur avant le premier déploiement avec le linter Dockerfile en ligne, qui applique un sous-ensemble de règles DL dans le style de Hadolint et ne construit pas l'image. Associez-le au formateur Dockerfile.

Épinglez l'image de base

Évitez FROM node:latest (DL3007) et fixez un tag précis de distribution. Railway construit ce Dockerfile s'il se trouve à la racine du dépôt.

Écoutez PORT

Ne figez pas le port 3000 en production quand la plateforme injecte PORT. next start lit lui-même la variable PORT (3000 n'est que la valeur par défaut), tout comme le server.js du mode standalone : -p $PORT est facultatif.

Erreurs qui font échouer un premier déploiement sur un PaaS

Secrets intégrés à l'image

Une ligne ENV AWS_SECRET= dans le Dockerfile ou un fichier .env versionné fuit dans les logs et les couches de l'image. Les variables de Railway existent pour que l'image reste générique.

À retenir — Validez la syntaxe du fichier .env avec le validateur ENV de FastMinify, et ne collez jamais de vrais jetons dans un champ de texte public.

Croire que les réglages par défaut de Vercel suivent partout

Vercel exécute Next.js en fonctions serverless et route les requêtes pour vous. Sur Railway, vous lancez en général next start comme processus Node de longue durée. Avec output: 'standalone', Next.js produit un dossier serveur autonome. Les fonctions liées à la plateforme Vercel, comme Edge Config ou les tâches cron, ne vous suivent pas chez un autre hébergeur.

À retenir — Lancez un build de production sur votre ordinateur avant le premier envoi vers le PaaS.

Laisser un gros bundle non minifié

Un PaaS ne minifie pas votre JavaScript côté client. Next.js le fait pour l'application, mais pas pour un widget.js placé dans public/. Pour ces fichiers isolés, utilisez le minificateur JavaScript en ligne.

À retenir — Mesurez le transfert sur l'URL Railway, en plus de localhost.

Avant de lancer le déploiement

Fichiers et configurations dans le navigateur

FastMinify travaille dans l'onglet du navigateur, ce qui aide quand le dépôt n'est pas cloné sur cette machine. Minifiez le CSS restant, passez le Dockerfile au linter et vérifiez Compose si Docker tourne encore en local.

Minifier le JS/CSS qui ne passe pas par next build
Vérifier le Dockerfile avec les règles DL avant que Railway ne construise l'image
Valider docker-compose.yml si vous gardez une stack locale
Aucun secret de production dans Git ni dans des outils en ligne
Facture et services oubliés

Railway facture l'usage au-delà des crédits inclus dans le forfait. Un service oublié qui occupe 2 Go de RAM suffit à transformer un projet personnel en facture surprise. Arrêtez les services inutiles, ou activez Serverless pour qu'un service inactif se mette en veille (le trafic sortant, par exemple une connexion ouverte à une base de données, le maintient éveillé). Un Droplet jamais détruit est la même erreur sur un autre tableau de bord.

Une alerte de dépense dans le compte Railway
Arrêter les environnements de prévisualisation inutilisés
Ne pas faire tourner de scrapers ni de navigateurs de CI dans le même service que l'application Next.js

PaaS vs Vercel vs VPS

Choisir selon le besoin, pas selon l'effet de mode

Vercel demande le moins d'effort pour un frontend Next.js. Un VPS l'emporte quand il vous faut un noyau sur mesure, un serveur de messagerie ou un accès SSH. Railway se place entre les deux : déploiement depuis Git, facturation à l'usage, et de la place pour un worker et une base de données à côté de l'application.

Si vous avez besoin de

frontend:Frontend Next.js, prévisualisations, Edge
application complète:Application + worker + petite base de données, une seule facture
contrôle total:SSH root, nginx sur mesure, messagerie, GPU

Commencez par

frontend:Vercel (ou un cloud frontend équivalent)
application complète:Railway ou Render
contrôle total:Droplet DigitalOcean / autre VPS

Railway n'est pas la seule réponse

Même problème, autres compromis

Une carte, pas un classement. Les tarifs et les offres gratuites évoluent : lisez la page du fournisseur avant de vous engager.

Vercel

Conçu par l'équipe de Next.js, avec la prise en charge la plus directe de l'App Router, des prévisualisations et d'Edge. Moins naturel si vous avez besoin d'un worker de longue durée ou d'une base de données classique dans le même projet, sans fournisseur supplémentaire.

Avantages :
Réglages Next.js par défaut, URL de prévisualisation, modules d'analytique
Le modèle de la documentation Next.js s'applique directement
Inconvénients :
Les applications à plusieurs services demandent d'autres produits
Les coûts de bande passante et d'invocations peuvent surprendre

Render

Déploiements depuis Git, services web, Postgres, workers en arrière-plan. Proche cousin de Railway. Choisissez la plateforme sur laquelle vous avez déjà un compte.

Avantages :
Association familière d'un service web et d'une base de données
Sites statiques et tâches cron dans le même compte
Inconvénients :
Les services web gratuits s'éteignent après 15 minutes sans trafic, et la requête suivante attend un démarrage à froid
Pas spécifique à Next.js : vous apportez la commande de démarrage

Droplet DigitalOcean (ou App Platform)

Un Droplet est un VPS : vous installez Node, Caddy ou nginx et certbot, et la machine vous appartient. App Platform est le PaaS de DigitalOcean. Un Droplet convient si vous travaillez déjà en SSH et voulez une adresse IPv4 publique à vous.

Avantages :
Prix de machine virtuelle prévisible si l'application reste minuscule
Contrôle total du gestionnaire de processus et du reverse proxy
Inconvénients :
Vous mettez à jour le système et déboguez le TLS vous-même
Excessif pour une démo Next.js à deux routes

FastMinify avant la première URL de production

Minifier ce que Next.js ne voit pas

Le build de production de Next.js minifie le JavaScript de l'application, mais pas un widget.js copié dans public/ ni un extrait de CMS. Pour ces fichiers isolés, utilisez le minificateur JavaScript en ligne et le minificateur CSS en ligne. Quand un fichier tiers devient illisible en production, le déminificateur JavaScript en ligne le remet en forme.

Minifier du JS/CSS collé depuis un CDN ou un ancien thème
Rendre lisible un fichier minifié de production sans source maps
S'exécute dans le navigateur : l'hébergeur ne voit pas ce que vous collez
Docker et fichiers .env à côté de l'application

Si Railway ou un autre hébergeur construit un Dockerfile, analysez-le d'abord. Si vous utilisez encore Compose en local, vous pouvez valider Docker Compose en ligne. Cherchez les clés en double dans vos fichiers .env avant de recopier les noms dans l'interface du PaaS. Tous ces outils figurent sur le hub outils DevOps en ligne.

Analyse du Dockerfile dans le style de Hadolint (sous-ensemble de règles DL, sans docker build)
Contrôle de la structure Compose, pas de la spécification complète
Vérifie la syntaxe du fichier .env, les clés en double et les noms de clés qui évoquent un secret ; ce n'est pas un détecteur de secrets

Envoyez l'URL, gardez le VPS pour plus tard

Pour un projet Next.js personnel, avec éventuellement un worker, un PaaS demande moins de soirées qu'un Droplet. Railway est l'exemple détaillé ici (lien affilié). Vercel reste le choix par défaut pour le seul frontend Next.js, et un VPS reste la bonne option quand vous voulez du SSH. Dans tous les cas, minifiez les fichiers restants et analysez les Dockerfiles dans FastMinify : cette étape est gratuite et locale.

Préparez les assets, puis déployez où vous avez choisi

Vercel pour un frontend Next.js seul, Railway ou Render pour application + worker + base, un VPS pour le SSH
Aucun secret dans Git : l'interface de variables du PaaS sert à cela
Minifier les fichiers restants de public/, car Next.js minifie déjà le bundle de l'application
Fixer la version des images de base Docker si vous livrez un Dockerfile
Lire la page des tarifs de l'hébergeur : les crédits et la facturation évoluent
Partager cet article
Partager cet article: