Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
giuseppe-trisciuoglio avatar

Nextjs Deployment

  • 1.5k installs
  • 311 repo stars
  • Updated June 22, 2026
  • giuseppe-trisciuoglio/developer-kit

nextjs-deployment is an agent skill that deploys Next.js applications using Docker standalone builds, GitHub Actions CI/CD, and OpenTelemetry monitoring.

About

The nextjs-deployment skill provides production deployment patterns for Next.js including Docker multi-stage builds, GitHub Actions pipelines, environment variable handling, and observability setup. It recommends standalone output for containers, documents NEXT_PUBLIC versus server-only secrets, and covers instrumentation.ts with OpenTelemetry via @vercel/otel. Dockerfile examples use node:20-alpine deps, builder, and runner stages with non-root nextjs user and HTTP health checks on /api/health. GitHub Actions workflows build and push to ghcr.io with GIT_HASH and NEXT_SERVER_ACTIONS_ENCRYPTION_KEY build args. The skill warns that multi-server Server Actions require a consistent encryption key or actions fail with Failed to find Server Action errors. Reference files cover docker-patterns, github-actions, monitoring, and deployment-platform guides. Use when developers dockerize Next.js, configure CI/CD, or add production health and tracing.

  • Standalone output mode with multi-stage Docker builds and non-root container user.
  • GitHub Actions workflow pushing to ghcr.io with build cache and encryption key generation.
  • Health check route pattern and OpenTelemetry instrumentation.ts setup.
  • Documents NEXT_PUBLIC_, server-only, and runtime environment variable rules.
  • Critical warning on NEXT_SERVER_ACTIONS_ENCRYPTION_KEY for multi-server deployments.

Nextjs Deployment by the numbers

  • 1,519 all-time installs (skills.sh)
  • +57 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #135 of 1,453 DevOps & CI/CD skills by installs in the Skillselion catalog
  • Security screen: HIGH risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

nextjs-deployment capabilities & compatibility

Capabilities
multi stage docker standalone builds · github actions container publish workflow · environment variable validation patterns · health check api route template · opentelemetry instrumentation setup
Works with
github · docker · kubernetes
Use cases
devops · ci cd · orchestration
Runs
Local or remote
From the docs

What nextjs-deployment says it does

Deploy Next.js applications to production with Docker, CI/CD pipelines, and comprehensive monitoring.
SKILL.md
Without this key, Server Actions fail with "Failed to find Server Action" errors in multi-server deployments.
SKILL.md
npx skills add https://github.com/giuseppe-trisciuoglio/developer-kit --skill nextjs-deployment

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs1.5k
repo stars311
Security audit2 / 3 scanners passed
Last updatedJune 22, 2026
Repositorygiuseppe-trisciuoglio/developer-kit

How do I dockerize Next.js, set up CI/CD, configure env vars, and add health checks for production?

Deploy Next.js apps with Docker standalone builds, GitHub Actions CI/CD, health checks, and OpenTelemetry monitoring.

Who is it for?

Developers shipping Next.js to containers or automated pipelines who need standalone output and observability.

Skip if: Skip for static export-only sites without server runtime or non-Next.js frameworks.

When should I use this skill?

User asks to deploy Next.js, dockerize, set up GitHub Actions, or configure production monitoring.

What you get

Dockerfile, GitHub Actions workflow, env validation, health endpoint, and instrumentation patterns ready for production.

  • vercel.json configuration
  • AWS deployment guide snippets
  • Security header and rewrite rules

Files

SKILL.mdMarkdownGitHub ↗

Next.js Deployment

Deploy Next.js applications to production with Docker, CI/CD pipelines, and comprehensive monitoring.

Overview

This skill provides patterns and code examples for deploying Next.js applications to production environments. It covers containerization with Docker, CI/CD automation with GitHub Actions, environment configuration, health checks, and production monitoring. Use standalone output mode for container deployments, multi-stage Docker builds for optimized images, and OpenTelemetry for observability.

When to Use

Activate when user requests involve:

  • "Deploy Next.js", "Dockerize Next.js", "containerize"
  • "GitHub Actions", "CI/CD pipeline", "automated deployment"
  • "Environment variables", "runtime config", "NEXT_PUBLIC"
  • "Preview deployment", "staging environment"
  • "Monitoring", "OpenTelemetry", "tracing", "logging"
  • "Health checks", "readiness", "liveness"
  • "Production build", "standalone output"
  • "Server Actions encryption key", "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY"

Quick Reference

Output Modes

ModeUse CaseCommand
standaloneDocker/container deploymentoutput: 'standalone'
exportStatic site (no server)output: 'export'
(default)Node.js server deploymentnext start

Environment Variable Types

PrefixAvailabilityUse Case
NEXT_PUBLIC_Build-time + BrowserPublic API keys, feature flags
(no prefix)Server-onlyDatabase URLs, secrets
RuntimeServer-onlyDifferent values per environment

Key Files

FilePurpose
DockerfileMulti-stage container build
.github/workflows/deploy.ymlCI/CD pipeline
next.config.tsBuild configuration
instrumentation.tsOpenTelemetry setup
src/app/api/health/route.tsHealth check endpoint

Instructions

1. Configure Standalone Output

// next.config.ts
import type { NextConfig } from 'next'

const nextConfig: NextConfig = {
  output: 'standalone',
  poweredByHeader: false,
  generateBuildId: async () => process.env.GIT_HASH || 'build',
}

export default nextConfig

2. Create Dockerfile

See references/docker-patterns.md for complete multi-stage builds, multi-arch support, and optimization.

# syntax=docker/dockerfile:1
FROM node:20-alpine AS base

FROM base AS deps
RUN apk add --no-cache libc6-compat
WORKDIR /app
COPY package.json package-lock.json* ./
RUN npm ci

FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
ENV NEXT_TELEMETRY_DISABLED=1 NODE_ENV=production
ARG GIT_HASH NEXT_SERVER_ACTIONS_ENCRYPTION_KEY
ENV GIT_HASH=${GIT_HASH} NEXT_SERVER_ACTIONS_ENCRYPTION_KEY=${NEXT_SERVER_ACTIONS_ENCRYPTION_KEY}
RUN npm run build

FROM base AS runner
WORKDIR /app
ENV NODE_ENV=production NEXT_TELEMETRY_DISABLED=1 PORT=3000 HOSTNAME="0.0.0.0"
RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 nextjs
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
COPY --from=builder --chown=nextjs:nodejs /app/public ./public
USER nextjs
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
  CMD node -e "require('http').get('http://localhost:3000/api/health', (r) => r.statusCode === 200 ? process.exit(0) : process.exit(1))"
CMD ["node", "server.js"]

3. Set Up GitHub Actions

See references/github-actions.md for complete workflows with testing, security scanning, and deployment strategies.

# .github/workflows/deploy.yml
name: Build and Deploy
on:
  push:
    branches: [main, develop]

env:
  REGISTRY: ghcr.io
  IMAGE_NAME: ${{ github.repository }}

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - uses: actions/checkout@v4
      - uses: docker/setup-buildx-action@v3
      - uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - id: meta
        uses: docker/metadata-action@v5
        with:
          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
      - id: generate-key
        run: echo "key=$(openssl rand -base64 32)" >> $GITHUB_OUTPUT
      - uses: docker/build-push-action@v5
        with:
          context: .
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          cache-from: type=gha
          cache-to: type=gha,mode=max
          build-args: |
            GIT_HASH=${{ github.sha }}
            NEXT_SERVER_ACTIONS_ENCRYPTION_KEY=${{ steps.generate-key.outputs.key }}

4. Configure Environment Variables

// src/lib/env.ts
export function getEnv() {
  return {
    databaseUrl: process.env.DATABASE_URL!,
    apiKey: process.env.API_KEY!,
    publicApiUrl: process.env.NEXT_PUBLIC_API_URL!,
  }
}

export function validateEnv() {
  const required = ['DATABASE_URL', 'API_KEY', 'NEXT_PUBLIC_API_URL']
  const missing = required.filter((key) => !process.env[key])
  if (missing.length > 0) {
    throw new Error(`Missing required environment variables: ${missing.join(', ')}`)
  }
}

5. Implement Health Checks

// src/app/api/health/route.ts
import { NextResponse } from 'next/server'

export const dynamic = 'force-dynamic'

export async function GET() {
  const checks = {
    status: 'healthy',
    timestamp: new Date().toISOString(),
    version: process.env.npm_package_version || 'unknown',
    uptime: process.uptime(),
  }
  return NextResponse.json(checks)
}

6. Set Up Monitoring

See references/monitoring.md for OpenTelemetry configuration, logging, alerting, and dashboards.

// instrumentation.ts
import { registerOTel } from '@vercel/otel'

export function register() {
  registerOTel({
    serviceName: process.env.OTEL_SERVICE_NAME || 'next-app',
  })
}

7. Handle Server Actions Encryption

CRITICAL: Generate and set consistent encryption key for multi-server deployments:

# Generate key
openssl rand -base64 32

# Set in GitHub Actions Secrets as NEXT_SERVER_ACTIONS_ENCRYPTION_KEY

Without this key, Server Actions fail with "Failed to find Server Action" errors in multi-server deployments.

Best Practices

  • Docker: Use multi-stage builds, enable standalone output, set non-root user, include health checks
  • Security: Never commit .env.local, use NEXT_PUBLIC_ only for public values, set NEXT_SERVER_ACTIONS_ENCRYPTION_KEY
  • Performance: Use output: 'standalone', enable CDN for static assets, use next/image
  • Environment: Use same Docker image across environments, inject runtime config via env vars

Examples

// next.config.ts
const nextConfig = {
  output: 'standalone',
  poweredByHeader: false,
  compress: true,
  generateBuildId: async () => process.env.GIT_HASH || 'build',
}
export default nextConfig
# docker-compose.yml
version: '3.8'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgresql://db:5432/myapp
      - NEXT_PUBLIC_API_URL=http://localhost:3000/api

Constraints and Warnings

Constraints

  • Standalone output requires Node.js 18+
  • Server Actions encryption key must be consistent across all instances
  • Runtime environment variables only work with output: 'standalone'
  • OpenTelemetry requires instrumentation.ts at project root

Warnings

  • Never use NEXT_PUBLIC_ prefix for sensitive values
  • Always set NEXT_SERVER_ACTIONS_ENCRYPTION_KEY for multi-server deployments
  • Without health checks, orchestrators may send traffic to unhealthy instances
  • Runtime env vars don't work with static export (output: 'export')

References

  • [references/docker-patterns.md](references/docker-patterns.md) - Advanced Docker configurations, multi-arch builds, optimization
  • [references/github-actions.md](references/github-actions.md) - Complete CI/CD workflows, testing, security scanning
  • [references/monitoring.md](references/monitoring.md) - OpenTelemetry, logging, alerting, dashboards
  • [references/deployment-platforms.md](references/deployment-platforms.md) - Platform-specific guides (Vercel, AWS, GCP, Azure)

Related skills

Forks & variants (1)

Nextjs Deployment has 1 known copy in the catalog totaling 21 installs. They canonicalize to this original listing.

How it compares

Use nextjs-deployment for platform config; use nextjs-code-review when the task is auditing App Router code before deploy.

FAQ

What Next.js output mode does nextjs-deployment recommend for Docker?

Standalone output with multi-stage Docker builds, non-root user, and HTTP health checks on /api/health.

When should I use nextjs-deployment?

When configuring Docker, CI/CD, environment variables, health checks, or OpenTelemetry for Next.js production.

Is nextjs-deployment safe to install?

Review the Security Audits panel on this page before installing in production.

DevOps & CI/CDdeployinfra

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.