diff --git a/apps/dokploy/components/dashboard/settings/servers/actions/show-dokploy-actions.tsx b/apps/dokploy/components/dashboard/settings/servers/actions/show-dokploy-actions.tsx index 7d63de210d..8a9133ccb5 100644 --- a/apps/dokploy/components/dashboard/settings/servers/actions/show-dokploy-actions.tsx +++ b/apps/dokploy/components/dashboard/settings/servers/actions/show-dokploy-actions.tsx @@ -19,8 +19,6 @@ export const ShowDokployActions = () => { const { mutateAsync: reloadServer, isPending } = api.settings.reloadServer.useMutation(); - const { mutateAsync: cleanRedis } = api.settings.cleanRedis.useMutation(); - const { mutateAsync: reloadRedis } = api.settings.reloadRedis.useMutation(); const { mutateAsync: cleanAllDeploymentQueue } = api.settings.cleanAllDeploymentQueue.useMutation(); @@ -70,21 +68,6 @@ export const ShowDokployActions = () => { - { - await cleanRedis() - .then(async () => { - toast.success("Redis cleaned"); - }) - .catch(() => { - toast.error("Error cleaning Redis"); - }); - }} - > - Clean Redis - - { @@ -99,21 +82,6 @@ export const ShowDokployActions = () => { > Clean all deployment queue - - { - await reloadRedis() - .then(async () => { - toast.success("Redis reloaded"); - }) - .catch(() => { - toast.error("Error reloading Redis"); - }); - }} - > - Reload Redis - diff --git a/apps/dokploy/components/dashboard/settings/web-server/update-webserver.tsx b/apps/dokploy/components/dashboard/settings/web-server/update-webserver.tsx index d8a35d142b..57673b1506 100644 --- a/apps/dokploy/components/dashboard/settings/web-server/update-webserver.tsx +++ b/apps/dokploy/components/dashboard/settings/web-server/update-webserver.tsx @@ -30,7 +30,6 @@ type ServiceStatus = { type HealthResult = { postgres: ServiceStatus; - redis: ServiceStatus; traefik: ServiceStatus; }; @@ -89,7 +88,6 @@ export const UpdateWebServer = ({ const allHealthy = healthResult && healthResult.postgres.status === "healthy" && - healthResult.redis.status === "healthy" && healthResult.traefik.status === "healthy"; const checkIsUpdateFinished = async () => { @@ -179,7 +177,7 @@ export const UpdateWebServer = ({ {modalState === "checking" && ( - Checking PostgreSQL, Redis and Traefik... + Checking PostgreSQL and Traefik... )} @@ -190,10 +188,6 @@ export const UpdateWebServer = ({ name="PostgreSQL" service={healthResult.postgres} /> - { - if (IS_CLOUD) { - return true; - } - - const { stdout: containerId } = await execAsync( - `docker ps --filter "name=dokploy-redis" --filter "status=running" -q | head -n 1`, - ); - - if (!containerId) { - throw new Error("Redis container not found"); - } - - const redisContainerId = containerId.trim(); - - await execAsync(`docker exec -i ${redisContainerId} redis-cli flushall`); - await audit(ctx, { - action: "update", - resourceType: "settings", - resourceName: "clean-redis", - }); - return true; - }), - reloadRedis: adminProcedure.mutation(async ({ ctx }) => { - if (IS_CLOUD) { - return true; - } - await reloadDockerResource("dokploy-redis"); - await audit(ctx, { - action: "reload", - resourceType: "settings", - resourceName: "dokploy-redis", - }); - return true; - }), cleanAllDeploymentQueue: adminProcedure.mutation(async ({ ctx }) => { if (IS_CLOUD) { return true; @@ -959,18 +922,16 @@ export const settingsRouter = createTRPCRouter({ if (IS_CLOUD) { return { postgres: { status: "healthy" as const }, - redis: { status: "healthy" as const }, traefik: { status: "healthy" as const }, }; } - const [postgres, redis, traefik] = await Promise.all([ + const [postgres, traefik] = await Promise.all([ checkPostgresHealth(), - checkRedisHealth(), checkTraefikHealth(), ]); - return { postgres, redis, traefik }; + return { postgres, traefik }; }), setupGPU: adminProcedure .input( diff --git a/apps/dokploy/server/queues/redis-connection.ts b/apps/dokploy/server/queues/redis-connection.ts deleted file mode 100644 index 520ce46187..0000000000 --- a/apps/dokploy/server/queues/redis-connection.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { ConnectionOptions } from "bullmq"; - -export const redisConfig: ConnectionOptions = { - host: - process.env.NODE_ENV === "production" - ? process.env.REDIS_HOST || "dokploy-redis" - : "127.0.0.1", -}; diff --git a/apps/dokploy/setup.ts b/apps/dokploy/setup.ts index 0f993e14a9..5f76008db0 100644 --- a/apps/dokploy/setup.ts +++ b/apps/dokploy/setup.ts @@ -6,7 +6,6 @@ const execAsync = promisify(exec); import { setupDirectories } from "@dokploy/server/setup/config-paths"; import { initializePostgres } from "@dokploy/server/setup/postgres-setup"; -import { initializeRedis } from "@dokploy/server/setup/redis-setup"; import { initializeNetwork, initializeSwarm, @@ -29,7 +28,6 @@ import { createDefaultServerTraefikConfig(); await execAsync(`docker pull traefik:v${TRAEFIK_VERSION}`); await initializeStandaloneTraefik(); - await initializeRedis(); await initializePostgres(); console.log("Dokploy setup completed"); exit(0); diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index e25e3947a2..e81ebba2a6 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -56,7 +56,6 @@ export * from "./setup/config-paths"; export * from "./setup/forward-auth-setup"; export * from "./setup/monitoring-setup"; export * from "./setup/postgres-setup"; -export * from "./setup/redis-setup"; export * from "./setup/server-audit"; export * from "./setup/server-setup"; export * from "./setup/server-validate"; diff --git a/packages/server/src/setup/redis-setup.ts b/packages/server/src/setup/redis-setup.ts deleted file mode 100644 index a81a049045..0000000000 --- a/packages/server/src/setup/redis-setup.ts +++ /dev/null @@ -1,66 +0,0 @@ -import type { CreateServiceOptions } from "dockerode"; -import { docker } from "../constants"; -import { pullImage } from "../utils/docker/utils"; - -export const initializeRedis = async () => { - const imageName = "redis:8"; - const containerName = "dokploy-redis"; - - const settings: CreateServiceOptions = { - Name: containerName, - TaskTemplate: { - ContainerSpec: { - Image: imageName, - Mounts: [ - { - Type: "volume", - Source: "dokploy-redis", - Target: "/data", - }, - ], - }, - Networks: [{ Target: "dokploy-network" }], - Placement: { - Constraints: ["node.role==manager"], - }, - }, - Mode: { - Replicated: { - Replicas: 1, - }, - }, - ...(process.env.NODE_ENV === "development" && { - EndpointSpec: { - Ports: [ - { - TargetPort: 6379, - PublishedPort: 6379, - Protocol: "tcp", - PublishMode: "host", - }, - ], - }, - }), - }; - try { - await pullImage(imageName); - - const service = docker.getService(containerName); - const inspect = await service.inspect(); - await service.update({ - version: Number.parseInt(inspect.Version.Index), - ...settings, - }); - console.log("Redis Started ✅"); - } catch (_) { - try { - await docker.createService(settings); - } catch (error: any) { - if (error?.statusCode !== 409) { - throw error; - } - console.log("Redis service already exists, continuing..."); - } - console.log("Redis Not Found: Starting ✅"); - } -}; diff --git a/packages/server/src/utils/docker/utils.ts b/packages/server/src/utils/docker/utils.ts index 02ad1e6448..6e9adb5d56 100644 --- a/packages/server/src/utils/docker/utils.ts +++ b/packages/server/src/utils/docker/utils.ts @@ -892,50 +892,6 @@ export const checkPostgresHealth = async (): Promise => { } }; -export const checkRedisHealth = async (): Promise => { - const serviceCheck = await checkSwarmServiceRunning("dokploy-redis"); - if (serviceCheck.status === "unhealthy") { - return serviceCheck; - } - - // Verify Redis actually responds to PING - const containerId = await getSwarmServiceContainerId("dokploy-redis"); - if (!containerId) { - return { status: "unhealthy", message: "Could not find running container" }; - } - - try { - const exec = await docker.getContainer(containerId).exec({ - Cmd: ["redis-cli", "ping"], - AttachStdout: true, - AttachStderr: true, - }); - const stream = await exec.start({}); - - const output = await new Promise((resolve) => { - let data = ""; - stream.on("data", (chunk: Buffer) => { - data += chunk.toString(); - }); - stream.on("end", () => resolve(data)); - }); - - if (!output.includes("PONG")) { - return { - status: "unhealthy", - message: `Redis did not respond with PONG: ${output.trim()}`, - }; - } - - return { status: "healthy" }; - } catch (error) { - return { - status: "unhealthy", - message: error instanceof Error ? error.message : "Failed to check Redis", - }; - } -}; - export const checkTraefikHealth = async (): Promise => { // Traefik can run as a standalone container or a swarm service try { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a6202323f5..9453bcab90 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -232,9 +232,6 @@ importers: boxen: specifier: ^7.1.1 version: 7.1.1 - bullmq: - specifier: 5.67.3 - version: 5.67.3 class-variance-authority: specifier: ^0.7.1 version: 0.7.1