feat: Fleet Forge UEM - device management, agent, remote desktop (VNC), TLS reverse proxy

This commit is contained in:
Pepe44DEV
2026-09-06 22:09:28 +00:00
commit db16ad5cc1
154 changed files with 22920 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
FROM node:20-alpine AS base
RUN corepack enable && corepack prepare pnpm@9.15.0 --activate
WORKDIR /app
FROM base AS deps
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml* ./
COPY apps/api/package.json ./apps/api/
COPY packages/shared/package.json ./packages/shared/
RUN pnpm install --frozen-lockfile || pnpm install
FROM base AS builder
COPY --from=deps /app/node_modules ./node_modules
COPY --from=deps /app/apps/api/node_modules ./apps/api/node_modules
COPY --from=deps /app/packages/shared/node_modules ./packages/shared/node_modules
COPY . .
RUN pnpm --filter @fleetforge/shared build
RUN pnpm --filter @fleetforge/api build
FROM node:20-alpine AS runner
WORKDIR /app
RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 fleetforge
COPY --from=builder /app/apps/api/dist ./dist
COPY --from=builder /app/apps/api/package.json ./
COPY --from=builder /app/packages/shared/dist ../packages/shared/dist
COPY --from=builder /app/packages/shared/package.json ../packages/shared/
COPY --from=builder /app/node_modules ./node_modules
USER fleetforge
EXPOSE 3000
CMD ["node", "dist/index.js"]
+30
View File
@@ -0,0 +1,30 @@
FROM node:20-alpine AS base
RUN corepack enable && corepack prepare pnpm@9.15.0 --activate
WORKDIR /app
FROM base AS deps
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml* ./
COPY apps/web/package.json ./apps/web/
COPY packages/shared/package.json ./packages/shared/
COPY packages/ui/package.json ./packages/ui/
RUN pnpm install --frozen-lockfile || pnpm install
FROM base AS builder
COPY --from=deps /app/node_modules ./node_modules
COPY --from=deps /app/apps/web/node_modules ./apps/web/node_modules
COPY --from=deps /app/packages/shared/node_modules ./packages/shared/node_modules
COPY --from=deps /app/packages/ui/node_modules ./packages/ui/node_modules
COPY . .
RUN pnpm --filter @fleetforge/shared build
RUN pnpm --filter @fleetforge/web build
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 fleetforge
COPY --from=builder /app/apps/web/.next/standalone ./
COPY --from=builder /app/apps/web/.next/static ./.next/static
COPY --from=builder /app/apps/web/public ./public
USER fleetforge
EXPOSE 3001
CMD ["node", "server.js"]
+26
View File
@@ -0,0 +1,26 @@
FROM node:20-alpine AS base
RUN corepack enable && corepack prepare pnpm@9.15.0 --activate
WORKDIR /app
FROM base AS deps
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml* ./
COPY apps/worker/package.json ./apps/worker/
COPY packages/shared/package.json ./packages/shared/
RUN pnpm install --frozen-lockfile || pnpm install
FROM base AS builder
COPY --from=deps /app/node_modules ./node_modules
COPY --from=deps /app/apps/worker/node_modules ./apps/worker/node_modules
COPY --from=deps /app/packages/shared/node_modules ./packages/shared/node_modules
COPY . .
RUN pnpm --filter @fleetforge/shared build
RUN pnpm --filter @fleetforge/worker build
FROM node:20-alpine AS runner
WORKDIR /app
RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 fleetforge
COPY --from=builder /app/apps/worker/dist ./dist
COPY --from=builder /app/apps/worker/package.json ./
COPY --from=builder /app/node_modules ./node_modules
USER fleetforge
CMD ["node", "dist/index.js"]
@@ -0,0 +1,82 @@
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: fleetforge
POSTGRES_PASSWORD: fleetforge
POSTGRES_DB: fleetforge
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U fleetforge"]
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
ports:
- "6379:6379"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 5
api:
build:
context: ../../
dockerfile: infrastructure/docker/Dockerfile.api
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://fleetforge:fleetforge@postgres:5432/fleetforge?schema=public
REDIS_URL: redis://redis:6379
JWT_SECRET: dev-jwt-secret-do-not-use-in-production
SESSION_SECRET: dev-session-secret-do-not-use-in-production
NODE_ENV: development
LOG_LEVEL: debug
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
volumes:
- ../../apps/api:/app
- /app/node_modules
- ../../infrastructure/migrations:/app/infrastructure/migrations
- ../../docs:/app/docs
worker:
build:
context: ../../
dockerfile: infrastructure/docker/Dockerfile.worker
environment:
DATABASE_URL: postgresql://fleetforge:fleetforge@postgres:5432/fleetforge?schema=public
NODE_ENV: development
depends_on:
postgres:
condition: service_healthy
volumes:
- ../../apps/worker:/app
- /app/node_modules
web:
build:
context: ../../
dockerfile: infrastructure/docker/Dockerfile.web
ports:
- "3001:3001"
environment:
NEXT_PUBLIC_API_URL: http://localhost:3000/api
depends_on:
- api
volumes:
- ../../apps/web:/app
- /app/node_modules
- /app/.next
volumes:
postgres_data: