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 49f6772b..9b12af84 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
@@ -13,6 +13,7 @@ import {
import { api } from "@/utils/api";
import { toast } from "sonner";
import { ShowModalLogs } from "../../web-server/show-modal-logs";
+import { GPUSupportModal } from "../gpu-support-modal";
export const ShowDokployActions = () => {
const { mutateAsync: reloadServer, isLoading } =
@@ -45,6 +46,7 @@ export const ShowDokployActions = () => {
Watch logs
+
diff --git a/apps/dokploy/components/dashboard/settings/servers/gpu-support-modal.tsx b/apps/dokploy/components/dashboard/settings/servers/gpu-support-modal.tsx
new file mode 100644
index 00000000..9cf858cd
--- /dev/null
+++ b/apps/dokploy/components/dashboard/settings/servers/gpu-support-modal.tsx
@@ -0,0 +1,36 @@
+import {
+ Dialog,
+ DialogContent,
+ DialogHeader,
+ DialogTitle,
+ DialogTrigger,
+} from "@/components/ui/dialog";
+import { DropdownMenuItem } from "@/components/ui/dropdown-menu";
+import { useState } from "react";
+import { GPUSupport } from "./gpu-support";
+
+export const GPUSupportModal = () => {
+ const [isOpen, setIsOpen] = useState(false);
+
+ return (
+
+ );
+};
diff --git a/apps/dokploy/components/dashboard/settings/servers/gpu-support.tsx b/apps/dokploy/components/dashboard/settings/servers/gpu-support.tsx
index ae931a3a..d0c178c4 100644
--- a/apps/dokploy/components/dashboard/settings/servers/gpu-support.tsx
+++ b/apps/dokploy/components/dashboard/settings/servers/gpu-support.tsx
@@ -26,7 +26,7 @@ export function GPUSupport({ serverId }: GPUSupportProps) {
api.settings.checkGPUStatus.useQuery(
{ serverId },
{
- enabled: !!serverId,
+ enabled: serverId !== undefined,
refetchInterval: 5000,
},
);
@@ -38,17 +38,20 @@ export function GPUSupport({ serverId }: GPUSupportProps) {
onSuccess: async () => {
toast.success("GPU support enabled successfully");
setIsLoading(false);
-
- await Promise.all([
- utils.settings.checkGPUStatus.invalidate({ serverId }),
- utils.server.invalidate(),
- ]);
+ await utils.settings.checkGPUStatus.invalidate({ serverId });
},
onError: (error) => {
if (error instanceof TRPCClientError) {
const errorMessage = error.message;
- if (errorMessage.includes("permission denied")) {
- toast.error("Permission denied. Please ensure proper sudo access.");
+ if (
+ errorMessage.includes(
+ "Permission denied. Please ensure proper sudo access.",
+ ) ||
+ errorMessage.includes("sudo access required")
+ ) {
+ toast.error(
+ "Administrator privileges required. Please enter your password when prompted.",
+ );
} else if (errorMessage.includes("Failed to configure GPU")) {
toast.error(
"GPU configuration failed. Please check system requirements.",
@@ -59,13 +62,12 @@ export function GPUSupport({ serverId }: GPUSupportProps) {
} else {
toast.error("Failed to enable GPU support. Please check server logs.");
}
-
setIsLoading(false);
},
});
const handleEnableGPU = async () => {
- if (!serverId) {
+ if (serverId === undefined) {
toast.error("No server selected");
return;
}
@@ -99,7 +101,7 @@ export function GPUSupport({ serverId }: GPUSupportProps) {
>