Construir um aplicativo Next.js é uma coisa; implantá-lo de forma confiável na produção é outra. Este guia cobre os principais caminhos de implantação — Vercel (mais fácil) e auto-hospedagem com Docker (maior controle) — além da configuração e otimização que importam para um aplicativo Next.js de produção em 2026.
📋 Table of Contents
Visão geral das opções de implantação
| Método | Melhor para | Esforço |
|---|---|---|
| Vercell | Implantação mais rápida, configuração zero, borda | Mínimo |
| Auto-host do Docker | Controle total, custo em escala | Moderado |
| Servidor de nó | Hospedagem VPS simples | Baixo-Moderado |
| Exportação estática | Sites totalmente estáticos | Baixo |
Método 1: Vercel (mais fácil)
# Install Vercel CLI
npm install -g vercel
# Deploy from your project directory
vercel # preview deployment
vercel --prod # production deployment
# Or connect your Git repo in the Vercel dashboard for
# automatic deployments on every push
Vercel (feito pelos criadores do Next.js) lida com compilações, cache de borda, funções sem servidor e otimização de imagem automaticamente. Defina variáveis de ambiente no painel. É o caminho mais rápido para um aplicativo Next.js de produção sem gerenciamento de infraestrutura.
Método 2: auto-hospedagem do Docker
Para controle total e custos previsíveis em grande escala, hospede-se sozinho com o Docker. A saída autônoma do Next.js torna isso eficiente:
// next.config.js — enable standalone output
module.exports = {
output: 'standalone', // bundles only needed files for a small image
};
# Dockerfile — multi-stage for a small production image
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
# Copy standalone output (much smaller than full node_modules)
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
EXPOSE 3000
CMD ["node", "server.js"]
# Build and run
docker build -t my-nextjs-app .
docker run -p 3000:3000 --env-file .env.production my-nextjs-app
Proxy reverso Nginx para auto-hospedagem
# /etc/nginx/sites-enabled/myapp
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Cache Next.js static assets aggressively
location /_next/static {
proxy_pass http://localhost:3000;
add_header Cache-Control "public, max-age=31536000, immutable";
}
}
Variáveis Ambientais na Produção
# Server-only secrets (never exposed to browser)
DATABASE_URL=postgresql://...
API_SECRET=...
# Client-exposed vars need NEXT_PUBLIC_ prefix (these are PUBLIC)
NEXT_PUBLIC_API_URL=https://api.example.com
# Set these in Vercel dashboard, or pass via --env-file to Docker
# NEVER commit production secrets
Cache e Revalidação
// Incremental Static Regeneration — cache pages, revalidate periodically
export const revalidate = 3600; // regenerate at most once per hour
// Or on-demand revalidation via API
import { revalidatePath } from 'next/cache';
export async function POST(request) {
// After content changes, revalidate the affected page
revalidatePath('/blog');
return Response.json({ revalidated: true });
}
// Fetch caching
const data = await fetch('https://api.example.com/data', {
next: { revalidate: 60 }, // cache this fetch for 60 seconds
});
Lista de verificação de produção
- Habilitar saída independente para imagens menores do Docker
- Defina todas as variáveis de ambiente na sua plataforma (não confirmado)
- Configurar cache — ISR para páginas, cabeçalhos de cache para ativos estáticos
- Otimizar imagens — use next/image (automático no Vercel; configure um carregador quando auto-hospedar)
- Adicionar monitoramento de erros — Sentinela ou similar para erros de produção
- Configurar HTTPS — automático no Vercel; Vamos criptografar para auto-hospedagem
- Habilitar compactação — gzip/brotli no nível do proxy
Perguntas Frequentes
P: Vercel ou auto-hospedagem?
R: Vercel para implantação mais rápida e gerenciamento zero de infraestrutura (ótimo para a maioria dos aplicativos). Auto-hospedagem com Docker para controle total, custos previsíveis em escala ou requisitos de infraestrutura específicos. Comece com Vercel; mude para auto-hospedagem se os custos ou o controle exigirem.
P: O Next.js auto-hospedado oferece suporte a todos os recursos?
R: A maioria, sim – SSR, ISR, rotas de API e otimização de imagem funcionam de forma auto-hospedada (a otimização de imagem precisa de um carregador configurado). Alguns recursos de borda específicos do Vercel diferem, mas o Next.js principal funciona totalmente quando auto-hospedado.
P: Por que minha otimização de imagem auto-hospedada não está funcionando?
R: A otimização de próxima imagem é automática no Vercel, mas precisa de configuração quando auto-hospedada – use o otimizador integrado (requer nitidez) ou configure um carregador de imagem/CDN externo. Verifique as configurações das imagens next.config.js.
P: Como posso lidar com variáveis de ambiente que diferem por ambiente?
R: Configure-os em sua plataforma de hospedagem (painel Vercel, Docker –env-file ou seu orquestrador). Use o prefixo NEXT_PUBLIC_ apenas para valores seguros para exposição ao navegador. Mantenha os segredos do lado do servidor.
P: Como posso reduzir as partidas a frio?
R: No Vercel, as funções sem servidor têm inicialização a frio; mantenha-os magros. Auto-hospedado com um servidor Node de longa duração não tem inicialização a frio. Para páginas ISR/estáticas, a maioria das solicitações é atendida instantaneamente a partir do cache, independentemente.
Conclusão
A implantação do Next.js em produção em 2026 tem dois caminhos principais:Vercel para implantação mais rápida e sem configuração com otimização automática e cache de borda, ouAuto-hospedagem Docker para controle total e custos previsíveis usando saída autônoma para imagens pequenas por trás de um proxy nginx. Seja qual for sua escolha, defina variáveis de ambiente na plataforma (nunca confirmadas), configure o cache com ISR e cabeçalhos de cache, otimize imagens e adicione monitoramento de erros. Comece com Vercel para simplificar e mude para auto-hospedagem quando os requisitos de custo ou controle justificarem o trabalho operacional adicional.
🔗 Share this article
✍️ Leave a Comment