diff --git a/apps/checker/cmd/private/main.go b/apps/checker/cmd/private/main.go index 3914447934..cc5e34d94f 100644 --- a/apps/checker/cmd/private/main.go +++ b/apps/checker/cmd/private/main.go @@ -69,9 +69,12 @@ func getEnv(key, fallback string) string { // UpdateMonitors fetches the latest monitors and starts/stops jobs as needed func getClient(apiKey string) v1.PrivateLocationServiceClient { + + ingestUrl := getEnv("OPENSTATUS_INGEST_URL", "https://openstatus-private-location.fly.dev") + client := v1.NewPrivateLocationServiceClient( http.DefaultClient, - "https://openstatus-private-location.fly.dev", + ingestUrl, connect.WithHTTPGet(), connect.WithInterceptors(NewAuthInterceptor(apiKey)), ) diff --git a/apps/dashboard/.dockerignore b/apps/dashboard/.dockerignore new file mode 100644 index 0000000000..db3acb21c8 --- /dev/null +++ b/apps/dashboard/.dockerignore @@ -0,0 +1,11 @@ +# This file is generated by Dofigen v2.5.0 +# See https://github.com/lenra-io/dofigen + +node_modules +/apps/docs +/apps/screenshot-service +/apps/web +/apps/dashboard +/apps/workflows +/packages/api +/packages/integrations/vercel diff --git a/apps/dashboard/Dockerfile b/apps/dashboard/Dockerfile new file mode 100644 index 0000000000..132c911462 --- /dev/null +++ b/apps/dashboard/Dockerfile @@ -0,0 +1,41 @@ +# syntax=docker/dockerfile:1.11 +# This file is generated by Dofigen v2.5.0 +# See https://github.com/lenra-io/dofigen + +# pnpm +FROM node@sha256:d943bf20249f8b92eff6f605362df2ee9cf2d6ce2ea771a8886e126ec8714f08 AS pnpm +LABEL \ + org.opencontainers.image.base.digest="sha256:d943bf20249f8b92eff6f605362df2ee9cf2d6ce2ea771a8886e126ec8714f08" \ + org.opencontainers.image.base.name="docker.io/node:22-slim" +ENV \ + PATH="$PNPM_HOME:$PATH" \ + PNPM_HOME="/pnpm" +WORKDIR /app/ +COPY \ + --link \ + "." "/app/" +RUN corepack enable + +# install +FROM pnpm AS install +WORKDIR /app/apps/dashboard +COPY \ + --from=pnpm \ + --link \ + "/app/" "/app/" +RUN \ + --mount=type=cache,target=/pnpm/store,sharing=locked \ + pnpm install --frozen-lockfile + +# runtime +FROM pnpm AS runtime +LABEL io.dofigen.version="2.5.0" +WORKDIR /app/apps/dashboard +COPY \ + --from=install \ + --chown=1000:1000 \ + --link \ + "/app/" "/app/" +USER 1000:1000 +EXPOSE 3000 +CMD ["pnpm", "dev"] diff --git a/apps/dashboard/docker-compose.yaml b/apps/dashboard/docker-compose.yaml new file mode 100644 index 0000000000..050f6f246b --- /dev/null +++ b/apps/dashboard/docker-compose.yaml @@ -0,0 +1,22 @@ +name: dashboard +services: + dashboard: + build: + context: ../.. + dockerfile: apps/dashboard/Dockerfile + + environment: + - DATABASE_URL=http://host.docker.internal:8081 + - DATABASE_AUTH_TOKEN=test + - RESEND_API_KEY=test + - UPSTASH_REDIS_REST_URL=test + - UPSTASH_REDIS_REST_TOKEN=test + - NODE_ENV=production + - GCP_PROJECT_ID=test + extra_hosts: + - "host.docker.internal:host-gateway" + + ports: + - 3002:3000 + + image: dashboard diff --git a/apps/dashboard/dofigen.lock b/apps/dashboard/dofigen.lock new file mode 100644 index 0000000000..1147aa1eb5 --- /dev/null +++ b/apps/dashboard/dofigen.lock @@ -0,0 +1,168 @@ +effective: | + ignore: + - node_modules + - /apps/docs + - /apps/screenshot-service + - /apps/web + - /apps/dashboard + - /apps/workflows + - /packages/api + - /packages/integrations/vercel + builders: + install: + fromBuilder: pnpm + workdir: /app/apps/dashboard + copy: + - fromBuilder: pnpm + paths: + - /app/ + target: /app/ + run: + - pnpm install --frozen-lockfile + cache: + - target: /pnpm/store + pnpm: + fromImage: + path: node + digest: sha256:d943bf20249f8b92eff6f605362df2ee9cf2d6ce2ea771a8886e126ec8714f08 + label: + org.opencontainers.image.base.digest: sha256:d943bf20249f8b92eff6f605362df2ee9cf2d6ce2ea771a8886e126ec8714f08 + org.opencontainers.image.base.name: docker.io/node:22-slim + workdir: /app/ + env: + PATH: $PNPM_HOME:$PATH + PNPM_HOME: /pnpm + copy: + - paths: + - . + target: /app/ + run: + - corepack enable + fromBuilder: pnpm + label: + io.dofigen.version: 2.5.0 + workdir: /app/apps/dashboard + copy: + - fromBuilder: install + paths: + - /app/ + target: /app/ + cmd: + - pnpm + - dev + expose: + - port: 3000 +images: + docker.io: + library: + node: + 22-slim: + digest: sha256:d943bf20249f8b92eff6f605362df2ee9cf2d6ce2ea771a8886e126ec8714f08 +resources: + dofigen.yml: + hash: 41b754f179324a267ad5bd723bf83f4343b0316cdc7208f50d5fa54a5f4ca18b + content: | + ignore: + - node_modules + - /apps/docs + - /apps/screenshot-service + - /apps/web + - /apps/dashboard + - /apps/workflows + - /packages/api + - /packages/integrations/vercel + builders: + pnpm: + fromImage: node:22-slim + workdir: /app/ + # Copy project + copy: + - . /app/ + # bind: + # - bunfig.toml + # - package.json + # - apps/dashboard/package.json + # - packages/analytics/package.json + # - packages/db/package.json + # - packages/emails/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/assertions/package.json + # - packages/regions/package.json + + env: + PNPM_HOME: /pnpm + PATH: $PNPM_HOME:$PATH + run: + - corepack enable + + install: + fromBuilder: pnpm + workdir: /app/apps/dashboard + cache: + - /pnpm/store + copy: + - fromBuilder: pnpm + source: /app/ + target: /app/ + # Install dependencies + run: + - pnpm install --frozen-lockfile + + # build: + # fromBuilder: pnpm + # workdir: /app/apps/dashboard + # copy: + # - fromBuilder: install + # source: /app/ + # target: /app/ + # cache: + # - /pnpm/store + + # # Should set env to production here + # # Compile the TypeScript application + # env: + # NODE_ENV: production + # OPENPANEL_CLIENT_SECRET: dummy + # NEXT_PUBLIC_OPENPANEL_CLIENT_ID: dummy + # DATABASE_URL: http://host.docker.internal:8081 + # DATABASE_AUTH_TOKEN: dummy + # RESEND_API_KEY: dummy + # UPSTASH_REDIS_REST_URL: dummy + # UPSTASH_REDIS_REST_TOKEN: dummy + # STRIPE_SECRET_KEY: "test" + # PROJECT_ID_VERCEL: "test" + # TEAM_ID_VERCEL: "test" + # VERCEL_AUTH_BEARER_TOKEN: "test" + # TINY_BIRD_API_KEY: test + # CRON_SECRET: test + # UNKEY_TOKEN: test + # UNKEY_API_ID: test + # run: pnpm run build + # depens_on: + # - install + + fromBuilder: pnpm + copy: + # - fromBuilder: install + # source: /app/ + # target: /app/ + - fromBuilder: install + source: /app/ + target: /app/ + # - fromBuilder: install + # source: /app/node_modules/apps/dashboard/node_modules/ + # target: /app/node_modules/apps/dashboard/node_modules/ + # chmod: "555" + expose: 3000 + workdir: /app/apps/dashboard + cmd: + - pnpm + - dev + # - run + # - dev diff --git a/apps/dashboard/dofigen.yml b/apps/dashboard/dofigen.yml new file mode 100644 index 0000000000..389f7c3e17 --- /dev/null +++ b/apps/dashboard/dofigen.yml @@ -0,0 +1,104 @@ +ignore: + - node_modules + - /apps/docs + - /apps/screenshot-service + - /apps/web + - /apps/dashboard + - /apps/workflows + - /packages/api + - /packages/integrations/vercel +builders: + pnpm: + fromImage: node:22-slim + workdir: /app/ + # Copy project + copy: + - . /app/ + # bind: + # - bunfig.toml + # - package.json + # - apps/dashboard/package.json + # - packages/analytics/package.json + # - packages/db/package.json + # - packages/emails/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/assertions/package.json + # - packages/regions/package.json + + env: + PNPM_HOME: /pnpm + PATH: $PNPM_HOME:$PATH + run: + - corepack enable + + install: + fromBuilder: pnpm + workdir: /app/apps/dashboard + cache: + - /pnpm/store + copy: + - fromBuilder: pnpm + source: /app/ + target: /app/ + # Install dependencies + run: + - pnpm install --frozen-lockfile + + # build: + # fromBuilder: pnpm + # workdir: /app/apps/dashboard + # copy: + # - fromBuilder: install + # source: /app/ + # target: /app/ + # cache: + # - /pnpm/store + + # # Should set env to production here + # # Compile the TypeScript application + # env: + # NODE_ENV: production + # OPENPANEL_CLIENT_SECRET: dummy + # NEXT_PUBLIC_OPENPANEL_CLIENT_ID: dummy + # DATABASE_URL: http://host.docker.internal:8081 + # DATABASE_AUTH_TOKEN: dummy + # RESEND_API_KEY: dummy + # UPSTASH_REDIS_REST_URL: dummy + # UPSTASH_REDIS_REST_TOKEN: dummy + # STRIPE_SECRET_KEY: "test" + # PROJECT_ID_VERCEL: "test" + # TEAM_ID_VERCEL: "test" + # VERCEL_AUTH_BEARER_TOKEN: "test" + # TINY_BIRD_API_KEY: test + # CRON_SECRET: test + # UNKEY_TOKEN: test + # UNKEY_API_ID: test + # run: pnpm run build + # depens_on: + # - install + +fromBuilder: pnpm +copy: + # - fromBuilder: install + # source: /app/ + # target: /app/ + - fromBuilder: install + source: /app/ + target: /app/ + # - fromBuilder: install + # source: /app/node_modules/apps/dashboard/node_modules/ + # target: /app/node_modules/apps/dashboard/node_modules/ + # chmod: "555" +expose: 3000 +workdir: /app/apps/dashboard +cmd: + - pnpm + - dev + # - run + # - dev diff --git a/apps/private-location/docker-compose.yaml b/apps/private-location/docker-compose.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/apps/status-page/.dockerignore b/apps/status-page/.dockerignore new file mode 100644 index 0000000000..db3acb21c8 --- /dev/null +++ b/apps/status-page/.dockerignore @@ -0,0 +1,11 @@ +# This file is generated by Dofigen v2.5.0 +# See https://github.com/lenra-io/dofigen + +node_modules +/apps/docs +/apps/screenshot-service +/apps/web +/apps/dashboard +/apps/workflows +/packages/api +/packages/integrations/vercel diff --git a/apps/status-page/Dockerfile b/apps/status-page/Dockerfile new file mode 100644 index 0000000000..b9655f9d77 --- /dev/null +++ b/apps/status-page/Dockerfile @@ -0,0 +1,41 @@ +# syntax=docker/dockerfile:1.11 +# This file is generated by Dofigen v2.5.0 +# See https://github.com/lenra-io/dofigen + +# pnpm +FROM node@sha256:d943bf20249f8b92eff6f605362df2ee9cf2d6ce2ea771a8886e126ec8714f08 AS pnpm +LABEL \ + org.opencontainers.image.base.digest="sha256:d943bf20249f8b92eff6f605362df2ee9cf2d6ce2ea771a8886e126ec8714f08" \ + org.opencontainers.image.base.name="docker.io/node:22-slim" +ENV \ + PNPM_HOME="/pnpm" \ + PATH="$PNPM_HOME:$PATH" +WORKDIR /app/ +COPY \ + --link \ + "." "/app/" +RUN corepack enable + +# install +FROM pnpm AS install +WORKDIR /app/apps/status-page +COPY \ + --from=pnpm \ + --link \ + "/app/" "/app/" +RUN \ + --mount=type=cache,target=/pnpm/store,sharing=locked \ + pnpm install --frozen-lockfile + +# runtime +FROM pnpm AS runtime +LABEL io.dofigen.version="2.5.0" +WORKDIR /app/apps/status-page +COPY \ + --from=install \ + --chown=1000:1000 \ + --link \ + "/app/" "/app/" +USER 1000:1000 +EXPOSE 3000 +CMD ["pnpm", "run", "dev"] diff --git a/apps/status-page/docker-compose.yaml b/apps/status-page/docker-compose.yaml new file mode 100644 index 0000000000..d7f0d0e3f5 --- /dev/null +++ b/apps/status-page/docker-compose.yaml @@ -0,0 +1,22 @@ +name: status-page +services: + status-page: + build: + context: ../.. + dockerfile: apps/status-page/Dockerfile + + environment: + - DATABASE_URL=http://host.docker.internal:8081 + - DATABASE_AUTH_TOKEN=test + - RESEND_API_KEY=test + - UPSTASH_REDIS_REST_URL=test + - UPSTASH_REDIS_REST_TOKEN=test + - NODE_ENV=production + - GCP_PROJECT_ID=test + extra_hosts: + - "host.docker.internal:host-gateway" + + ports: + - 3002:3000 + + image: status-page diff --git a/apps/status-page/dofigen.lock b/apps/status-page/dofigen.lock new file mode 100644 index 0000000000..a011821d38 --- /dev/null +++ b/apps/status-page/dofigen.lock @@ -0,0 +1,168 @@ +effective: | + ignore: + - node_modules + - /apps/docs + - /apps/screenshot-service + - /apps/web + - /apps/dashboard + - /apps/workflows + - /packages/api + - /packages/integrations/vercel + builders: + pnpm: + fromImage: + path: node + digest: sha256:d943bf20249f8b92eff6f605362df2ee9cf2d6ce2ea771a8886e126ec8714f08 + label: + org.opencontainers.image.base.digest: sha256:d943bf20249f8b92eff6f605362df2ee9cf2d6ce2ea771a8886e126ec8714f08 + org.opencontainers.image.base.name: docker.io/node:22-slim + workdir: /app/ + env: + PNPM_HOME: /pnpm + PATH: $PNPM_HOME:$PATH + copy: + - paths: + - . + target: /app/ + run: + - corepack enable + install: + fromBuilder: pnpm + workdir: /app/apps/status-page + copy: + - fromBuilder: pnpm + paths: + - /app/ + target: /app/ + run: + - pnpm install --frozen-lockfile + cache: + - target: /pnpm/store + fromBuilder: pnpm + label: + io.dofigen.version: 2.5.0 + workdir: /app/apps/status-page + copy: + - fromBuilder: install + paths: + - /app/ + target: /app/ + cmd: + - pnpm + - run + - dev + expose: + - port: 3000 +images: + docker.io: + library: + node: + 22-slim: + digest: sha256:d943bf20249f8b92eff6f605362df2ee9cf2d6ce2ea771a8886e126ec8714f08 +resources: + dofigen.yml: + hash: fa636656a86811e9a5a304ec5b9ada3e939081687c80d714916c272da9e88bfe + content: | + ignore: + - node_modules + - /apps/docs + - /apps/screenshot-service + - /apps/web + - /apps/dashboard + - /apps/workflows + - /packages/api + - /packages/integrations/vercel + builders: + pnpm: + fromImage: node:22-slim + workdir: /app/ + # Copy project + copy: + - . /app/ + # bind: + # - bunfig.toml + # - package.json + # - apps/status-page/package.json + # - packages/analytics/package.json + # - packages/db/package.json + # - packages/emails/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/assertions/package.json + # - packages/regions/package.json + + env: + PNPM_HOME: /pnpm + PATH: $PNPM_HOME:$PATH + run: + - corepack enable + + install: + fromBuilder: pnpm + workdir: /app/apps/status-page + cache: + - /pnpm/store + copy: + - fromBuilder: pnpm + source: /app/ + target: /app/ + # Install dependencies + run: + - pnpm install --frozen-lockfile + + # build: + # fromBuilder: pnpm + # workdir: /app/apps/status-page + # copy: + # - fromBuilder: install + # source: /app/ + # target: /app/ + # cache: + # - /pnpm/store + + # # Should set env to production here + # # Compile the TypeScript application + # env: + # NODE_ENV: production + # OPENPANEL_CLIENT_SECRET: dummy + # NEXT_PUBLIC_OPENPANEL_CLIENT_ID: dummy + # DATABASE_URL: http://host.docker.internal:8081 + # DATABASE_AUTH_TOKEN: dummy + # RESEND_API_KEY: dummy + # UPSTASH_REDIS_REST_URL: dummy + # UPSTASH_REDIS_REST_TOKEN: dummy + # STRIPE_SECRET_KEY: "test" + # PROJECT_ID_VERCEL: "test" + # TEAM_ID_VERCEL: "test" + # VERCEL_AUTH_BEARER_TOKEN: "test" + # TINY_BIRD_API_KEY: test + # CRON_SECRET: test + # UNKEY_TOKEN: test + # UNKEY_API_ID: test + # run: pnpm run build + # depens_on: + # - install + + fromBuilder: pnpm + copy: + # - fromBuilder: install + # source: /app/ + # target: /app/ + - fromBuilder: install + source: /app/ + target: /app/ + # - fromBuilder: install + # source: /app/node_modules/apps/status-page/node_modules/ + # target: /app/node_modules/apps/status-page/node_modules/ + # chmod: "555" + expose: 3000 + workdir: /app/apps/status-page + cmd: + - pnpm + - run + - dev diff --git a/apps/status-page/dofigen.yml b/apps/status-page/dofigen.yml new file mode 100644 index 0000000000..287bb64fb4 --- /dev/null +++ b/apps/status-page/dofigen.yml @@ -0,0 +1,103 @@ +ignore: + - node_modules + - /apps/docs + - /apps/screenshot-service + - /apps/web + - /apps/dashboard + - /apps/workflows + - /packages/api + - /packages/integrations/vercel +builders: + pnpm: + fromImage: node:22-slim + workdir: /app/ + # Copy project + copy: + - . /app/ + # bind: + # - bunfig.toml + # - package.json + # - apps/status-page/package.json + # - packages/analytics/package.json + # - packages/db/package.json + # - packages/emails/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/assertions/package.json + # - packages/regions/package.json + + env: + PNPM_HOME: /pnpm + PATH: $PNPM_HOME:$PATH + run: + - corepack enable + + install: + fromBuilder: pnpm + workdir: /app/apps/status-page + cache: + - /pnpm/store + copy: + - fromBuilder: pnpm + source: /app/ + target: /app/ + # Install dependencies + run: + - pnpm install --frozen-lockfile + + # build: + # fromBuilder: pnpm + # workdir: /app/apps/status-page + # copy: + # - fromBuilder: install + # source: /app/ + # target: /app/ + # cache: + # - /pnpm/store + + # # Should set env to production here + # # Compile the TypeScript application + # env: + # NODE_ENV: production + # OPENPANEL_CLIENT_SECRET: dummy + # NEXT_PUBLIC_OPENPANEL_CLIENT_ID: dummy + # DATABASE_URL: http://host.docker.internal:8081 + # DATABASE_AUTH_TOKEN: dummy + # RESEND_API_KEY: dummy + # UPSTASH_REDIS_REST_URL: dummy + # UPSTASH_REDIS_REST_TOKEN: dummy + # STRIPE_SECRET_KEY: "test" + # PROJECT_ID_VERCEL: "test" + # TEAM_ID_VERCEL: "test" + # VERCEL_AUTH_BEARER_TOKEN: "test" + # TINY_BIRD_API_KEY: test + # CRON_SECRET: test + # UNKEY_TOKEN: test + # UNKEY_API_ID: test + # run: pnpm run build + # depens_on: + # - install + +fromBuilder: pnpm +copy: + # - fromBuilder: install + # source: /app/ + # target: /app/ + - fromBuilder: install + source: /app/ + target: /app/ + # - fromBuilder: install + # source: /app/node_modules/apps/status-page/node_modules/ + # target: /app/node_modules/apps/status-page/node_modules/ + # chmod: "555" +expose: 3000 +workdir: /app/apps/status-page +cmd: + - pwd + # - run + # - dev diff --git a/docker-compose.yaml b/docker-compose.yaml index fd37a976c8..f0d10e3fb6 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,4 +1,21 @@ services: + # External deps + libsql: + image: ghcr.io/tursodatabase/libsql-server:latest + ports: + - 8080:8080 + - 5001:5001 + tinybird-local-classic: + image: tinybirdco/tinybird-local:latest + container_name: tinybird-local-classic + platform: linux/amd64 + ports: + - "7181:7181" + + environment: + - COMPATIBILITY_MODE=1 + +# our services internal-server: build: context: . @@ -22,11 +39,7 @@ services: target: /app/data image: workflows-test command: . - libsql: - image: ghcr.io/tursodatabase/libsql-server:latest - ports: - - 8080:8080 - - 5001:5001 + api: build: context: . @@ -44,16 +57,40 @@ services: - OPENPANEL_CLIENT_SECRET=test - RESEND_API_KEY=test command: . - # dashboard: - # build: - # context: . - # dockerfile: apps/dashboard/Dockerfile - # ports: - # - 3002:3000 - # image: dashboard - # environment: - # - API_URL=http://host.docker.internal:3001 - # - NEXT_PUBLIC_OPENPANEL_CLIENT_ID=test - # - OPENPANEL_CLIENT_SECRET=test - # - NODE_ENV=production - # command: . + dashboard: + build: + context: ../.. + dockerfile: apps/dashboard/Dockerfile + + environment: + - DATABASE_URL=http://host.docker.internal:8081 + - DATABASE_AUTH_TOKEN=test + - RESEND_API_KEY=test + - UPSTASH_REDIS_REST_URL=test + - UPSTASH_REDIS_REST_TOKEN=test + - NODE_ENV=production + - GCP_PROJECT_ID=test + extra_hosts: + - "host.docker.internal:host-gateway" + + ports: + - 3002:3000 + image: dashboard + status-page: + build: + context: . + dockerfile: apps/status-page/Dockerfile + + environment: + - DATABASE_URL=http://host.docker.internal:8081 + - DATABASE_AUTH_TOKEN=test + - RESEND_API_KEY=test + - UPSTASH_REDIS_REST_URL=test + - UPSTASH_REDIS_REST_TOKEN=test + - NODE_ENV=production + - GCP_PROJECT_ID=test + extra_hosts: + - "host.docker.internal:host-gateway" + ports: + - 3003:3000 + image: status-page