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