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.
13 kB ยท 320 lines
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321effective: | ignore: - node_modules - /apps/docs - /apps/screenshot-service - /apps/server - /apps/web - /apps/dashboard - /apps/status-page - /packages/analytics - /packages/api - /packages/error - /packages/tracker builders: install: fromImage: path: node digest: sha256:c0753125a3789977aefe869cbebccf70e3cfd7ea84ca48547458f02e4f1d7146 label: org.opencontainers.image.base.digest: sha256:c0753125a3789977aefe869cbebccf70e3cfd7ea84ca48547458f02e4f1d7146 org.opencontainers.image.stage: install 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/workflows... --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/workflows/package.json source: apps/workflows/package.json - target: packages/assertions/package.json source: packages/assertions/package.json - target: packages/db/package.json source: packages/db/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/importers/package.json source: packages/importers/package.json - target: packages/regions/package.json source: packages/regions/package.json - target: packages/services/package.json source: packages/services/package.json - target: packages/subscriptions/package.json source: packages/subscriptions/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/tinybird/package.json source: packages/tinybird/package.json - target: packages/upstash/package.json source: packages/upstash/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/status-fetcher/package.json source: packages/status-fetcher/package.json build: fromImage: path: node digest: sha256:c0753125a3789977aefe869cbebccf70e3cfd7ea84ca48547458f02e4f1d7146 label: org.opencontainers.image.base.digest: sha256:c0753125a3789977aefe869cbebccf70e3cfd7ea84ca48547458f02e4f1d7146 org.opencontainers.image.stage: build org.opencontainers.image.base.name: docker.io/node:26.8.1-slim workdir: /app/apps/workflows env: NODE_ENV: production copy: - paths: - . target: /app/ - fromBuilder: install paths: - /app/node_modules target: /app/node_modules - fromBuilder: install paths: - /app/apps/workflows/node_modules target: /app/apps/workflows/node_modules - fromBuilder: install paths: - /app/packages target: /app/packages run: - ./node_modules/.bin/tsdown - mkdir -p /tmp/sc /app/data - node scripts/sidecar-package.mjs /tmp/sc/package.json - npm install --prefix /tmp/sc --omit=dev --no-package-lock --no-audit --no-fund fromImage: path: node digest: sha256:c0753125a3789977aefe869cbebccf70e3cfd7ea84ca48547458f02e4f1d7146 label: org.opencontainers.image.source: https://github.com/openstatusHQ/openstatus org.opencontainers.image.title: OpenStatus Workflows org.opencontainers.image.vendor: OpenStatus io.dofigen.version: 2.8.0 org.opencontainers.image.authors: OpenStatus Team org.opencontainers.image.description: Background job processing and probe scheduling for OpenStatus org.opencontainers.image.base.digest: sha256:c0753125a3789977aefe869cbebccf70e3cfd7ea84ca48547458f02e4f1d7146 org.opencontainers.image.base.name: docker.io/node:26.8.1-slim user: user: '1000' group: '1000' workdir: /app/ env: NODE_ENV: production copy: - fromBuilder: build paths: - /app/apps/workflows/dist target: /app/apps/workflows/dist chmod: '555' - fromBuilder: build paths: - /tmp/sc/node_modules target: /app/apps/workflows/node_modules chmod: '555' - fromBuilder: build paths: - /app/data target: /app/data root: run: - apt-get update && apt-get install -y --no-install-recommends curl ca-certificates && rm -rf /var/lib/apt/lists/* entrypoint: - node - /app/apps/workflows/dist/serve.mjs expose: - port: 3000 healthcheck: cmd: '["curl", "-f", "http://localhost:3000/ping"]' interval: 1m timeout: 10s start: 30s retries: 3images: docker.io: library: node: 26.8.1-slim: digest: sha256:c0753125a3789977aefe869cbebccf70e3cfd7ea84ca48547458f02e4f1d7146resources: dofigen.yml: hash: 31d39f4cb1231466bc802222e029bfad8f7447f8e35013f5a222c3cf5499c10b content: | ignore: - node_modules - /apps/docs - /apps/screenshot-service - /apps/server - /apps/web - /apps/dashboard - /apps/status-page - /packages/analytics - /packages/api - /packages/error - /packages/tracker builders: 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/workflows/package.json - packages/assertions/package.json - packages/db/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/importers/package.json - packages/regions/package.json - packages/services/package.json - packages/subscriptions/package.json - packages/utils/package.json - packages/tsconfig/package.json - packages/test-utils/package.json - packages/tinybird/package.json - packages/upstash/package.json - packages/theme-store/package.json - packages/locales/package.json - packages/status-fetcher/package.json # Install dependencies scoped to the workflows subgraph (dev included: the build stage needs tsdown) run: # Node 25+ no longer bundles corepack - npm install -g corepack@0.36.0 - corepack enable pnpm - pnpm install --frozen-lockfile --filter=@openstatus/workflows... --loglevel debug cache: - /root/.local/share/pnpm/store # Stage 4: Bundle the app with tsdown into dist/ build: fromImage: node:26.8.1-slim workdir: /app/apps/workflows labels: org.opencontainers.image.stage: build copy: - . /app/ - fromBuilder: install source: /app/node_modules target: /app/node_modules - fromBuilder: install source: /app/apps/workflows/node_modules target: /app/apps/workflows/node_modules - fromBuilder: install source: /app/packages target: /app/packages env: NODE_ENV: production # Everything is inlined except the 3 packages that can't be (see tsdown.config.ts). They ship as # a minimal side-car node_modules, installed by npm on the build platform so Fly amd64 gets the # right libsql native binary, at the exact versions pnpm resolved. run: - ./node_modules/.bin/tsdown - mkdir -p /tmp/sc /app/data - node scripts/sidecar-package.mjs /tmp/sc/package.json - npm install --prefix /tmp/sc --omit=dev --no-package-lock --no-audit --no-fund # Runtime stage: Node plus curl (healthcheck) and the system CA store, which libsql's native # TLS reads โ Node's own fetch bundles its CAs, the addon does not. 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 ca-certificates && rm -rf /var/lib/apt/lists/* workdir: /app/ # Metadata labels labels: org.opencontainers.image.title: OpenStatus Workflows org.opencontainers.image.description: Background job processing and probe scheduling 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 # The bundle resolves its externals from the side-car node_modules one level up from dist/ copy: - fromBuilder: build source: /app/apps/workflows/dist target: /app/apps/workflows/dist chmod: "555" - fromBuilder: build source: /tmp/sc/node_modules target: /app/apps/workflows/node_modules chmod: "555" - fromBuilder: build source: /app/data target: /app/data user: "1000:1000" expose: "3000" healthcheck: interval: 1m timeout: 10s start: 30s retries: 3 cmd: '["curl", "-f", "http://localhost:3000/ping"]' entrypoint: ["node", "/app/apps/workflows/dist/serve.mjs"]