Deploy Next.js in production, outside Vercel
Outside Vercel, Next.js keeps all its features. It needs a container, its static files, sharp for images and, from two instances on, a shared cache. You set that up in your repository, Fransys deploys on every push, without YAML.
No credit card, no commitment.
Your Next.js repository
- Next.js container
- Redis
- Database
- Object storage
Kubernetes, built and run by Fransys
The European cloud you chose Scaleway · OVHcloud · Hetzner · Outscale
What Vercel was setting up for you
The Next.js documentation is clear: a Node.js server or a Docker container supports all its features. What Vercel set up without asking becomes your configuration: the image, static files, image optimization, the cache between instances, the clean shutdown. It fits in your repository, and the platform operates the rest.
- 1Dockerfile at the root of the repository
- 1deployment gesture: git push
- 0lines of YAML to write
Next.js in production, point by point
-
The container
output: 'standalone'produces a.next/standalonefolder that deploys without installingnode_modules. Your Dockerfile, at the root of the repository, turns it into the image of the Docker block. -
The static files
This minimal server copies neither
publicnor.next/static. Your Dockerfile places them next to the standalone folder, otherwise they are missing in production. -
The images
With standalone mode, the documentation asks you to install
sharpfor image optimization. It goes into the image, with your dependencies. -
The shared cache
By default, each instance keeps its cache in memory. From the second one on, a cache handler and a Redis block share entries and tags. Credentials are injected into the application.
-
The variables
NEXT_PUBLIC_variables are frozen at build time: they must exist when the image is built. The others are set in the block, outside the repository and outside the image. -
The clean shutdown
On each update, Kubernetes sends
SIGTERMto the old instance. Next.js then finishes in-flight requests before stopping, and its documentation recommends giving it 10 to 30 seconds.
From push to release
-
git pushThe commit lands on the configured branch.
-
buildThe image is built from your Dockerfile, with your public variables.
-
verifyThe cluster starts the new image, and the platform checks that it responds.
-
liveThe new version receives traffic. On failure, automatic rollback to the previous one.
With your agent, or by hand
With your agentexample
Deploy my Next.js app in standalone mode, with a shared Redis cache.
- The agent reads your repository and prepares the plan: the blocks, each with its price.
- Someone on the team approves the plan.
- The engine executes; the new version receives traffic once verified.
By hand
- Place a Docker block on the canvas, then a Redis block connected to the application.
- Connect your Git repository: the Dockerfile at the root is used for the build.
- Push to the configured branch: the release goes live.
What people ask about Next.js
Does Fransys have a Next.js block?
Next.js goes through the Docker block, with your Dockerfile. Laravel, React, Angular and Vue have a native block; other frameworks use this one, which has the same connections, variables, metrics and logs.
Why don't my NEXT_PUBLIC_ variables change after a redeploy?
Next.js freezes them at build time, and the application no longer reacts to changes afterwards. Pass them when the image is built, in the Dockerfile or in the pipeline Fransys adds to your repository, and rebuild to change one. A value read on the server stays in the block.
How do I share the cache between several instances?
Declare a cacheHandler and set cacheMaxMemorySize to 0, as the Next.js documentation shows. Your handler stores entries in a Redis block connected to the application, which receives REDIS_HOST, REDIS_PORT and REDIS_PASSWORD. Invalidated tags are synced through Redis too.
What about streaming?
Next.js supports it outside Vercel. Behind nginx or a similar proxy, it asks you to turn off buffering: its documentation sets the X-Accel-Buffering header to no in next.config.js.
Can two versions coexist during an update?
Yes, for the time of the switch. Next.js detects this skew with deploymentId: give it the version identifier, the commit for example, read from a variable set at build time.
Which Next.js and Node.js versions?
The ones in your Dockerfile: the base image remains your choice. As of 2 November 2026, the latest Next.js release is 16.4.4, and its documentation asks for Node.js 20.9 at minimum.
To go further: the Vercel alternative in Europe and CI/CD on Kubernetes.
Your Next.js app on Fransys: where to start
See the console in demo, in your name. To cost your app, the infra plan does it line by line, machines included.
No credit card, no commitment.
Read on the blog
Heroku and Vercel too expensive: where to migrate in 2026?
Heroku with no free tier, Vercel bills spiralling: a comparison of European alternatives for startups. Migrate to managed Kubernetes without DevOps.
What does a DevOps engineer really cost in 2026? (and how to keep that spend down)
Salary, social contributions, recruitment, turnover: the real cost of a DevOps engineer in France exceeds €90,000/year. Full breakdown and alternatives for startups without DevOps.
AWS vs Fransys: what does your cloud infrastructure really cost in 2026?
A detailed AWS vs Fransys comparison on European hosting. Prices line by line, and three costed startup scenarios.