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:latest

Dockerfile

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: 3

Environment Variables

All configuration is driven through environment variables. No config files needed.

VariableRequiredDescription
MERIDIAN_LICENSE_KEYYesYour Nimbus license key from the dashboard.
MERIDIAN_API_ENDPOINTNoOverride the API endpoint. Defaults to https://api.getnimbus.net.
MERIDIAN_HEARTBEAT_INTERVALNoSeconds between license heartbeats. Default 300.
MERIDIAN_LOG_LEVELNoLog verbosity: debug, info, warn, error. Default info.
MERIDIAN_DISABLE_TELEMETRYNoSet to 1 to opt out of anonymous usage telemetry.
MERIDIAN_TRUST_PROXYNoSet to 1 if behind a reverse proxy (nginx, Caddy, Traefik).

Next Steps

Your Meridian instance is running. Now configure your application to use it.