import http from "node:http"; import { config } from "dotenv"; import next from "next"; import { deploymentWorker } from "./queues/deployments-queue"; import { initCronJobs } from "./utils/backups"; import { getPublicIpWithFallback, setupTerminalWebSocketServer, } from "./wss/terminal"; import { setupDeploymentLogsWebSocketServer } from "./wss/listen-deployment"; import { setupDockerStatsMonitoringSocketServer } from "./wss/docker-stats"; import { setupDirectories } from "./setup/config-paths"; import { initializeNetwork } from "./setup/setup"; import { createDefaultMiddlewares, createDefaultServerTraefikConfig, createDefaultTraefikConfig, initializeTraefik, } from "./setup/traefik-setup"; import { initializeRedis } from "./setup/redis-setup"; import { initializePostgres } from "./setup/postgres-setup"; import { migration } from "@/server/db/migration"; import { setupDockerContainerLogsWebSocketServer } from "./wss/docker-container-logs"; import { setupDockerContainerTerminalWebSocketServer } from "./wss/docker-container-terminal"; import { generateOpenAPIDocumentFromTRPCRouter } from "openapi-trpc"; import { appRouter } from "./api/root"; import { getDokployVersion } from "./api/services/settings"; export const doc = generateOpenAPIDocumentFromTRPCRouter(appRouter, { pathPrefix: "/api/trpc", processOperation(op) { op.security = [{ bearerAuth: [] }]; }, }); doc.components = { securitySchemes: { bearerAuth: { type: "http", scheme: "bearer", bearerFormat: "JWT", }, }, }; doc.info = { title: "Dokploy API", description: "Endpoints for dokploy", version: getDokployVersion(), }; config({ path: ".env" }); const PORT = Number.parseInt(process.env.PORT || "3000", 10); const dev = process.env.NODE_ENV !== "production"; const app = next({ dev }); const handle = app.getRequestHandler(); void app.prepare().then(async () => { try { const server = http.createServer((req, res) => { if (req.method === "GET" && req.url === "/trpc.json") { res.setHeader("Content-Type", "application/json"); res.end(JSON.stringify(doc)); // Asegúrate de definir `doc` return; } if (req.method === "GET" && req.url === "/trpc") { res.setHeader("Content-Type", "text/html"); res.end(`