Deployment Guide
Docker + Meridian
Ship Meridian in a container with full environment-variable configuration. Works with Docker, Docker Compose, Kubernetes, and any OCI runtime.
Quick Start
Pull the image and run it with your license key. That's it.
docker run -d \
--name meridian \
-p 3000:3000 \
-e MERIDIAN_LICENSE_KEY=your-license-key \
-e MERIDIAN_API_ENDPOINT=https://api.getnimbus.net \
-e MERIDIAN_HEARTBEAT_INTERVAL=300 \
-e MERIDIAN_LOG_LEVEL=info \
ghcr.io/fooglegiber/meridian:latestDockerfile
Multi-stage build for a lean production image. Customize the ENV directives with your configuration.
FROM node:20-alpine AS builder
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV MERIDIAN_LICENSE_KEY=your-license-key
ENV MERIDIAN_API_ENDPOINT=https://api.getnimbus.net
ENV MERIDIAN_HEARTBEAT_INTERVAL=300
ENV MERIDIAN_LOG_LEVEL=info
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"]Docker Compose
Use an .env file or shell variable for MERIDIAN_LICENSE_KEY. The healthcheck ensures the container restarts if Meridian becomes unresponsive.
version: "3.9"
services:
meridian:
build: .
ports:
- "3000:3000"
environment:
- MERIDIAN_LICENSE_KEY=${MERIDIAN_LICENSE_KEY}
- MERIDIAN_API_ENDPOINT=https://api.getnimbus.net
- MERIDIAN_HEARTBEAT_INTERVAL=300
- MERIDIAN_LOG_LEVEL=info
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--spider", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3Environment Variables
All configuration is driven through environment variables. No config files needed.
| Variable | Required | Description |
|---|---|---|
| MERIDIAN_LICENSE_KEY | Yes | Your Nimbus license key from the dashboard. |
| MERIDIAN_API_ENDPOINT | No | Override the API endpoint. Defaults to https://api.getnimbus.net. |
| MERIDIAN_HEARTBEAT_INTERVAL | No | Seconds between license heartbeats. Default 300. |
| MERIDIAN_LOG_LEVEL | No | Log verbosity: debug, info, warn, error. Default info. |
| MERIDIAN_DISABLE_TELEMETRY | No | Set to 1 to opt out of anonymous usage telemetry. |
| MERIDIAN_TRUST_PROXY | No | Set to 1 if behind a reverse proxy (nginx, Caddy, Traefik). |
Next Steps
Your Meridian instance is running. Now configure your application to use it.