From 012f8ff2f530f10d6a4cf522add93b4e3feee90a Mon Sep 17 00:00:00 2001
From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Date: Sun, 8 Dec 2024 20:01:37 -0600
Subject: [PATCH] feat: add validate server
---
.../settings/servers/validate-server.tsx | 35 +++++++++---
apps/dokploy/server/api/routers/server.ts | 21 ++++++--
packages/server/src/setup/server-validate.ts | 53 +++++++++++++------
3 files changed, 84 insertions(+), 25 deletions(-)
diff --git a/apps/dokploy/components/dashboard/settings/servers/validate-server.tsx b/apps/dokploy/components/dashboard/settings/servers/validate-server.tsx
index f556cee9..d668c5df 100644
--- a/apps/dokploy/components/dashboard/settings/servers/validate-server.tsx
+++ b/apps/dokploy/components/dashboard/settings/servers/validate-server.tsx
@@ -73,25 +73,48 @@ export const ValidateServer = ({ serverId }: Props) => {
Status
- Shows the configuration state that changes with the Enable
- GPU
+ Shows the server configuration status
+
`
if command_exists docker; then
- echo true
+ echo "$(docker --version | awk '{print $3}' | sed 's/,//') true"
else
- echo false
+ echo "0.0.0 false"
fi
`;
export const validateRClone = () => `
if command_exists rclone; then
- echo true
+ echo "$(rclone --version | head -n 1 | awk '{print $2}') true"
else
- echo false
+ echo "0.0.0 false"
fi
`;
@@ -27,17 +27,17 @@ export const validateSwarm = () => `
export const validateNixpacks = () => `
if command_exists nixpacks; then
- echo true
+ echo "$(nixpacks --version | awk '{print $2}') true"
else
- echo false
+ echo "0.0.0 false"
fi
`;
export const validateBuildpacks = () => `
if command_exists pack; then
- echo true
+ echo "$(pack --version | awk '{print $1}') true"
else
- echo false
+ echo "0.0.0 false"
fi
`;
@@ -48,6 +48,15 @@ export const validateMainDirectory = () => `
echo false
fi
`;
+
+export const validateDokployNetwork = () => `
+ if docker network ls | grep -q 'dokploy-network'; then
+ echo true
+ else
+ echo false
+ fi
+`;
+
export const serverValidate = async (serverId: string) => {
const client = new Client();
const server = await findServerById(serverId);
@@ -63,14 +72,28 @@ export const serverValidate = async (serverId: string) => {
command -v "$@" > /dev/null 2>&1
}
- isDockerInstalled=$(${validateDocker()})
- isRCloneInstalled=$(${validateRClone()})
- isSwarmInstalled=$(${validateSwarm()})
- isNixpacksInstalled=$(${validateNixpacks()})
- isBuildpacksInstalled=$(${validateBuildpacks()})
- isMainDirectoryInstalled=$(${validateMainDirectory()})
+ dockerVersionEnabled=$(${validateDocker()})
+ rcloneVersionEnabled=$(${validateRClone()})
+ nixpacksVersionEnabled=$(${validateNixpacks()})
+ buildpacksVersionEnabled=$(${validateBuildpacks()})
- echo "{\\"isDockerInstalled\\": $isDockerInstalled, \\"isRCloneInstalled\\": $isRCloneInstalled, \\"isSwarmInstalled\\": $isSwarmInstalled, \\"isNixpacksInstalled\\": $isNixpacksInstalled, \\"isBuildpacksInstalled\\": $isBuildpacksInstalled, \\"isMainDirectoryInstalled\\": $isMainDirectoryInstalled}"
+ dockerVersion=$(echo $dockerVersionEnabled | awk '{print $1}')
+ dockerEnabled=$(echo $dockerVersionEnabled | awk '{print $2}')
+
+ rcloneVersion=$(echo $rcloneVersionEnabled | awk '{print $1}')
+ rcloneEnabled=$(echo $rcloneVersionEnabled | awk '{print $2}')
+
+ nixpacksVersion=$(echo $nixpacksVersionEnabled | awk '{print $1}')
+ nixpacksEnabled=$(echo $nixpacksVersionEnabled | awk '{print $2}')
+
+ buildpacksVersion=$(echo $buildpacksVersionEnabled | awk '{print $1}')
+ buildpacksEnabled=$(echo $buildpacksVersionEnabled | awk '{print $2}')
+
+ isDokployNetworkInstalled=$(${validateDokployNetwork()})
+ isSwarmInstalled=$(${validateSwarm()})
+ isMainDirectoryInstalled=$(${validateMainDirectory()})
+
+ echo "{\\"docker\\": {\\"version\\": \\"$dockerVersion\\", \\"enabled\\": $dockerEnabled}, \\"rclone\\": {\\"version\\": \\"$rcloneVersion\\", \\"enabled\\": $rcloneEnabled}, \\"nixpacks\\": {\\"version\\": \\"$nixpacksVersion\\", \\"enabled\\": $nixpacksEnabled}, \\"buildpacks\\": {\\"version\\": \\"$buildpacksVersion\\", \\"enabled\\": $buildpacksEnabled}, \\"isDokployNetworkInstalled\\": $isDokployNetworkInstalled, \\"isSwarmInstalled\\": $isSwarmInstalled, \\"isMainDirectoryInstalled\\": $isMainDirectoryInstalled}"
`;
client.exec(bashCommand, (err, stream) => {
if (err) {