Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
12 kB ยท 305 lines
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306effective: | ignore: - node_modules - /apps/docs - /apps/screenshot-service - /apps/web - /apps/dashboard - /apps/status-page - /apps/workflows - /packages/api - /packages/integrations/vercel builders: build: fromImage: path: node digest: sha256:c0753125a3789977aefe869cbebccf70e3cfd7ea84ca48547458f02e4f1d7146 label: org.opencontainers.image.base.name: docker.io/node:26.8.1-slim org.opencontainers.image.base.digest: sha256:c0753125a3789977aefe869cbebccf70e3cfd7ea84ca48547458f02e4f1d7146 org.opencontainers.image.stage: build workdir: /app/apps/server env: NODE_ENV: production copy: - paths: - . target: /app/ - fromBuilder: install paths: - /app/node_modules target: /app/node_modules - fromBuilder: install paths: - /app/apps/server/node_modules target: /app/apps/server/node_modules - fromBuilder: install paths: - /app/packages target: /app/packages run: - ./node_modules/.bin/tsdown install: fromImage: path: node digest: sha256:c0753125a3789977aefe869cbebccf70e3cfd7ea84ca48547458f02e4f1d7146 label: org.opencontainers.image.stage: install org.opencontainers.image.base.digest: sha256:c0753125a3789977aefe869cbebccf70e3cfd7ea84ca48547458f02e4f1d7146 org.opencontainers.image.base.name: docker.io/node:26.8.1-slim workdir: /app/ run: - npm install -g corepack@0.36.0 - corepack enable pnpm - pnpm install --frozen-lockfile --filter=@openstatus/server... --loglevel debug cache: - target: /root/.local/share/pnpm/store bind: - target: pnpm-workspace.yaml source: pnpm-workspace.yaml - target: pnpm-lock.yaml source: pnpm-lock.yaml - target: package.json source: package.json - target: apps/server/package.json source: apps/server/package.json - target: packages/analytics/package.json source: packages/analytics/package.json - target: packages/db/package.json source: packages/db/package.json - target: packages/proto/package.json source: packages/proto/package.json - target: packages/emails/package.json source: packages/emails/package.json - target: packages/notifications/base/package.json source: packages/notifications/base/package.json - target: packages/notifications/discord/package.json source: packages/notifications/discord/package.json - target: packages/notifications/email/package.json source: packages/notifications/email/package.json - target: packages/notifications/grafana-oncall/package.json source: packages/notifications/grafana-oncall/package.json - target: packages/notifications/google-chat/package.json source: packages/notifications/google-chat/package.json - target: packages/notifications/ms-teams/package.json source: packages/notifications/ms-teams/package.json - target: packages/notifications/ntfy/package.json source: packages/notifications/ntfy/package.json - target: packages/notifications/opsgenie/package.json source: packages/notifications/opsgenie/package.json - target: packages/notifications/pagerduty/package.json source: packages/notifications/pagerduty/package.json - target: packages/notifications/slack/package.json source: packages/notifications/slack/package.json - target: packages/notifications/telegram/package.json source: packages/notifications/telegram/package.json - target: packages/notifications/bird-whatsapp/package.json source: packages/notifications/bird-whatsapp/package.json - target: packages/notifications/twillio-sms/package.json source: packages/notifications/twillio-sms/package.json - target: packages/notifications/webhook/package.json source: packages/notifications/webhook/package.json - target: packages/error/package.json source: packages/error/package.json - target: packages/regions/package.json source: packages/regions/package.json - target: packages/tinybird/package.json source: packages/tinybird/package.json - target: packages/tracker/package.json source: packages/tracker/package.json - target: packages/upstash/package.json source: packages/upstash/package.json - target: packages/utils/package.json source: packages/utils/package.json - target: packages/tsconfig/package.json source: packages/tsconfig/package.json - target: packages/test-utils/package.json source: packages/test-utils/package.json - target: packages/subscriptions/package.json source: packages/subscriptions/package.json - target: packages/assertions/package.json source: packages/assertions/package.json - target: packages/theme-store/package.json source: packages/theme-store/package.json - target: packages/locales/package.json source: packages/locales/package.json - target: packages/services/package.json source: packages/services/package.json - target: packages/importers/package.json source: packages/importers/package.json fromImage: path: node digest: sha256:c0753125a3789977aefe869cbebccf70e3cfd7ea84ca48547458f02e4f1d7146 label: org.opencontainers.image.base.name: docker.io/node:26.8.1-slim io.dofigen.version: 2.8.0 org.opencontainers.image.source: https://github.com/openstatusHQ/openstatus org.opencontainers.image.authors: OpenStatus Team org.opencontainers.image.title: OpenStatus Server org.opencontainers.image.vendor: OpenStatus org.opencontainers.image.description: REST API server with Hono framework for OpenStatus org.opencontainers.image.base.digest: sha256:c0753125a3789977aefe869cbebccf70e3cfd7ea84ca48547458f02e4f1d7146 user: user: '1000' group: '1000' workdir: /app/ env: NODE_ENV: production copy: - fromBuilder: build paths: - /app/apps/server/dist target: /app/dist chmod: '555' root: run: - apt-get update && apt-get install -y --no-install-recommends curl && rm -rf /var/lib/apt/lists/* entrypoint: - node - /app/dist/serve.mjs expose: - port: 3000 healthcheck: cmd: '["curl", "-f", "http://localhost:3000/ping"]' interval: 30s timeout: 10s start: 30s retries: 3images: docker.io: library: node: 26.8.1-slim: digest: sha256:c0753125a3789977aefe869cbebccf70e3cfd7ea84ca48547458f02e4f1d7146resources: dofigen.yml: hash: c879241ce1630e5039425ef4629d578946dff5df9fbda5474b96dcc57f6cc27b content: | # Files to exclude from Docker context ignore: - node_modules - /apps/docs - /apps/screenshot-service - /apps/web - /apps/dashboard - /apps/status-page - /apps/workflows - /packages/api - /packages/integrations/vercel builders: # Stage 1: Install dependencies (dev included: the build stage needs tsdown) install: fromImage: node:26.8.1-slim workdir: /app/ labels: org.opencontainers.image.stage: install bind: - pnpm-workspace.yaml - pnpm-lock.yaml - package.json - apps/server/package.json - packages/analytics/package.json - packages/db/package.json - packages/proto/package.json - packages/emails/package.json - packages/notifications/base/package.json - packages/notifications/discord/package.json - packages/notifications/email/package.json - packages/notifications/grafana-oncall/package.json - packages/notifications/google-chat/package.json - packages/notifications/ms-teams/package.json - packages/notifications/ntfy/package.json - packages/notifications/opsgenie/package.json - packages/notifications/pagerduty/package.json - packages/notifications/slack/package.json - packages/notifications/telegram/package.json - packages/notifications/bird-whatsapp/package.json - packages/notifications/twillio-sms/package.json - packages/notifications/webhook/package.json - packages/error/package.json - packages/regions/package.json - packages/tinybird/package.json - packages/tracker/package.json - packages/upstash/package.json - packages/utils/package.json - packages/tsconfig/package.json - packages/test-utils/package.json - packages/subscriptions/package.json - packages/assertions/package.json - packages/theme-store/package.json - packages/locales/package.json - packages/services/package.json - packages/importers/package.json run: # Node 25+ no longer bundles corepack - npm install -g corepack@0.36.0 - corepack enable pnpm - pnpm install --frozen-lockfile --filter=@openstatus/server... --loglevel debug cache: - /root/.local/share/pnpm/store # Stage 2: Bundle the app with tsdown into dist/ (every dependency inlined) build: fromImage: node:26.8.1-slim workdir: /app/apps/server labels: org.opencontainers.image.stage: build env: NODE_ENV: production copy: - . /app/ - fromBuilder: install source: /app/node_modules target: /app/node_modules - fromBuilder: install source: /app/apps/server/node_modules target: /app/apps/server/node_modules - fromBuilder: install source: /app/packages target: /app/packages run: - ./node_modules/.bin/tsdown # Runtime stage: Node plus curl for the healthcheck. No ca-certificates: the server talks to libSQL # over HTTP (pure JS) and Node bundles its own CA store, so nothing reads the system one. fromImage: node:26.8.1-slim root: run: # One chained command: dofigen emits a heredoc RUN, which doesn't stop on a failed line - apt-get update && apt-get install -y --no-install-recommends curl && rm -rf /var/lib/apt/lists/* workdir: /app/ # Metadata labels labels: org.opencontainers.image.title: OpenStatus Server org.opencontainers.image.description: REST API server with Hono framework for OpenStatus org.opencontainers.image.source: https://github.com/openstatusHQ/openstatus org.opencontainers.image.vendor: OpenStatus org.opencontainers.image.authors: OpenStatus Team env: NODE_ENV: production # Copy the bundle copy: - fromBuilder: build source: /app/apps/server/dist target: /app/dist chmod: "555" # Security: run as non-root user user: "1000:1000" # Expose port expose: "3000" healthcheck: interval: 30s timeout: 10s start: 30s retries: 3 cmd: '["curl", "-f", "http://localhost:3000/ping"]' # Start application entrypoint: ["node", "/app/dist/serve.mjs"]