diff --git a/README.md b/README.md
index 8faf22a35..d60962cff 100644
--- a/README.md
+++ b/README.md
@@ -77,6 +77,10 @@ For detailed documentation, visit [docs.dokploy.com](https://docs.dokploy.com).
diff --git a/apps/dokploy/components/dashboard/application/advanced/show-resources.tsx b/apps/dokploy/components/dashboard/application/advanced/show-resources.tsx
index 25040067b..3beedcdbc 100644
--- a/apps/dokploy/components/dashboard/application/advanced/show-resources.tsx
+++ b/apps/dokploy/components/dashboard/application/advanced/show-resources.tsx
@@ -150,7 +150,10 @@ export const ShowResources = ({ id, type }: Props) => {
render={({ field }) => {
return (
-
+
e.preventDefault()}
+ >
Memory Limit
@@ -182,7 +185,10 @@ export const ShowResources = ({ id, type }: Props) => {
name="memoryReservation"
render={({ field }) => (
-
+
e.preventDefault()}
+ >
Memory Reservation
@@ -215,7 +221,10 @@ export const ShowResources = ({ id, type }: Props) => {
render={({ field }) => {
return (
-
+
e.preventDefault()}
+ >
CPU Limit
@@ -249,7 +258,10 @@ export const ShowResources = ({ id, type }: Props) => {
render={({ field }) => {
return (
-
+
e.preventDefault()}
+ >
CPU Reservation
diff --git a/apps/dokploy/components/dashboard/application/general/generic/save-bitbucket-provider.tsx b/apps/dokploy/components/dashboard/application/general/generic/save-bitbucket-provider.tsx
index 6f6db5dd1..1f54ddd58 100644
--- a/apps/dokploy/components/dashboard/application/general/generic/save-bitbucket-provider.tsx
+++ b/apps/dokploy/components/dashboard/application/general/generic/save-bitbucket-provider.tsx
@@ -150,7 +150,7 @@ export const SaveBitbucketProvider = ({ applicationId }: Props) => {
enableSubmodules: data.enableSubmodules || false,
})
.then(async () => {
- toast.success("Service Provided Saved");
+ toast.success("Service Provider Saved");
await refetch();
})
.catch(() => {
diff --git a/apps/dokploy/components/dashboard/application/general/generic/save-github-provider.tsx b/apps/dokploy/components/dashboard/application/general/generic/save-github-provider.tsx
index 9a4b92ce1..80d6850ca 100644
--- a/apps/dokploy/components/dashboard/application/general/generic/save-github-provider.tsx
+++ b/apps/dokploy/components/dashboard/application/general/generic/save-github-provider.tsx
@@ -149,7 +149,7 @@ export const SaveGithubProvider = ({ applicationId }: Props) => {
enableSubmodules: data.enableSubmodules,
})
.then(async () => {
- toast.success("Service Provided Saved");
+ toast.success("Service Provider Saved");
await refetch();
})
.catch(() => {
diff --git a/apps/dokploy/components/dashboard/application/general/generic/save-gitlab-provider.tsx b/apps/dokploy/components/dashboard/application/general/generic/save-gitlab-provider.tsx
index cb7209f8a..d6f65caf3 100644
--- a/apps/dokploy/components/dashboard/application/general/generic/save-gitlab-provider.tsx
+++ b/apps/dokploy/components/dashboard/application/general/generic/save-gitlab-provider.tsx
@@ -167,7 +167,7 @@ export const SaveGitlabProvider = ({ applicationId }: Props) => {
enableSubmodules: data.enableSubmodules,
})
.then(async () => {
- toast.success("Service Provided Saved");
+ toast.success("Service Provider Saved");
await refetch();
})
.catch(() => {
diff --git a/apps/dokploy/components/dashboard/compose/delete-service.tsx b/apps/dokploy/components/dashboard/compose/delete-service.tsx
index e75aad5e5..5c8577dff 100644
--- a/apps/dokploy/components/dashboard/compose/delete-service.tsx
+++ b/apps/dokploy/components/dashboard/compose/delete-service.tsx
@@ -104,7 +104,7 @@ export const DeleteService = ({ id, type }: Props) => {
push(
`/dashboard/project/${result?.environment?.projectId}/environment/${result?.environment?.environmentId}`,
);
- toast.success("deleted successfully");
+ toast.success("Service deleted successfully");
setIsOpen(false);
})
.catch(() => {
diff --git a/apps/dokploy/components/dashboard/compose/general/generic/save-bitbucket-provider-compose.tsx b/apps/dokploy/components/dashboard/compose/general/generic/save-bitbucket-provider-compose.tsx
index d2a5d622a..06c88fff4 100644
--- a/apps/dokploy/components/dashboard/compose/general/generic/save-bitbucket-provider-compose.tsx
+++ b/apps/dokploy/components/dashboard/compose/general/generic/save-bitbucket-provider-compose.tsx
@@ -152,7 +152,7 @@ export const SaveBitbucketProviderCompose = ({ composeId }: Props) => {
enableSubmodules: data.enableSubmodules,
})
.then(async () => {
- toast.success("Service Provided Saved");
+ toast.success("Service Provider Saved");
await refetch();
})
.catch(() => {
diff --git a/apps/dokploy/components/dashboard/compose/general/generic/save-github-provider-compose.tsx b/apps/dokploy/components/dashboard/compose/general/generic/save-github-provider-compose.tsx
index fa7f40b96..5ad950e4c 100644
--- a/apps/dokploy/components/dashboard/compose/general/generic/save-github-provider-compose.tsx
+++ b/apps/dokploy/components/dashboard/compose/general/generic/save-github-provider-compose.tsx
@@ -151,7 +151,7 @@ export const SaveGithubProviderCompose = ({ composeId }: Props) => {
triggerType: data.triggerType,
})
.then(async () => {
- toast.success("Service Provided Saved");
+ toast.success("Service Provider Saved");
await refetch();
})
.catch(() => {
diff --git a/apps/dokploy/components/dashboard/compose/general/generic/save-gitlab-provider-compose.tsx b/apps/dokploy/components/dashboard/compose/general/generic/save-gitlab-provider-compose.tsx
index 9ace74ff6..933abd1a2 100644
--- a/apps/dokploy/components/dashboard/compose/general/generic/save-gitlab-provider-compose.tsx
+++ b/apps/dokploy/components/dashboard/compose/general/generic/save-gitlab-provider-compose.tsx
@@ -160,7 +160,7 @@ export const SaveGitlabProviderCompose = ({ composeId }: Props) => {
enableSubmodules: data.enableSubmodules,
})
.then(async () => {
- toast.success("Service Provided Saved");
+ toast.success("Service Provider Saved");
await refetch();
})
.catch(() => {
diff --git a/apps/dokploy/components/dashboard/impersonation/impersonation-bar.tsx b/apps/dokploy/components/dashboard/impersonation/impersonation-bar.tsx
index 7804e9add..a5aae598c 100644
--- a/apps/dokploy/components/dashboard/impersonation/impersonation-bar.tsx
+++ b/apps/dokploy/components/dashboard/impersonation/impersonation-bar.tsx
@@ -281,6 +281,7 @@ export const ImpersonationBar = () => {
diff --git a/apps/dokploy/components/dashboard/project/add-database.tsx b/apps/dokploy/components/dashboard/project/add-database.tsx
index 064e93544..c0600a2d9 100644
--- a/apps/dokploy/components/dashboard/project/add-database.tsx
+++ b/apps/dokploy/components/dashboard/project/add-database.tsx
@@ -55,7 +55,7 @@ import { api } from "@/utils/api";
type DbType = typeof mySchema._type.type;
const dockerImageDefaultPlaceholder: Record = {
- mongo: "mongo:6",
+ mongo: "mongo:7",
mariadb: "mariadb:11",
mysql: "mysql:8",
postgres: "postgres:15",
diff --git a/apps/dokploy/components/dashboard/settings/notifications/handle-notifications.tsx b/apps/dokploy/components/dashboard/settings/notifications/handle-notifications.tsx
index 8e7135a9d..4e330b089 100644
--- a/apps/dokploy/components/dashboard/settings/notifications/handle-notifications.tsx
+++ b/apps/dokploy/components/dashboard/settings/notifications/handle-notifications.tsx
@@ -225,10 +225,10 @@ export const HandleNotifications = ({ notificationId }: Props) => {
});
useEffect(() => {
- if (type === "email") {
+ if (type === "email" && fields.length === 0) {
append("");
}
- }, [type, append]);
+ }, [type, append, fields.length]);
useEffect(() => {
if (notification) {
diff --git a/apps/dokploy/components/layouts/user-nav.tsx b/apps/dokploy/components/layouts/user-nav.tsx
index e476a5f50..ca5854196 100644
--- a/apps/dokploy/components/layouts/user-nav.tsx
+++ b/apps/dokploy/components/layouts/user-nav.tsx
@@ -44,6 +44,7 @@ export const UserNav = () => {
>
diff --git a/apps/dokploy/pages/register.tsx b/apps/dokploy/pages/register.tsx
index 60a3d8de4..4452eb1ea 100644
--- a/apps/dokploy/pages/register.tsx
+++ b/apps/dokploy/pages/register.tsx
@@ -101,7 +101,7 @@ const Register = ({ isCloud }: Props) => {
setIsError(true);
setError(error.message || "An error occurred");
} else {
- toast.success("User registered successfuly", {
+ toast.success("User registered successfully", {
duration: 2000,
});
if (!isCloud) {
diff --git a/packages/server/src/utils/traefik/middleware.ts b/packages/server/src/utils/traefik/middleware.ts
index 907e65afd..681b0b831 100644
--- a/packages/server/src/utils/traefik/middleware.ts
+++ b/packages/server/src/utils/traefik/middleware.ts
@@ -46,8 +46,14 @@ export const deleteMiddleware = (
};
export const deleteAllMiddlewares = async (application: ApplicationNested) => {
- const config = loadMiddlewares();
- const { security, appName, redirects } = application;
+ const { security, appName, redirects, serverId } = application;
+ let config: FileConfig;
+
+ if (serverId) {
+ config = await loadRemoteMiddlewares(serverId);
+ } else {
+ config = loadMiddlewares();
+ }
if (config.http?.middlewares) {
if (security.length > 0) {
@@ -62,8 +68,8 @@ export const deleteAllMiddlewares = async (application: ApplicationNested) => {
}
}
- if (application.serverId) {
- await writeTraefikConfigRemote(config, "middlewares", application.serverId);
+ if (serverId) {
+ await writeTraefikConfigRemote(config, "middlewares", serverId);
} else {
writeMiddleware(config);
}