mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
feat: add validate server
This commit is contained in:
@@ -73,25 +73,48 @@ export const ValidateServer = ({ serverId }: Props) => {
|
|||||||
<div className="border rounded-lg p-4">
|
<div className="border rounded-lg p-4">
|
||||||
<h3 className="text-lg font-semibold mb-1">Status</h3>
|
<h3 className="text-lg font-semibold mb-1">Status</h3>
|
||||||
<p className="text-sm text-muted-foreground mb-4">
|
<p className="text-sm text-muted-foreground mb-4">
|
||||||
Shows the configuration state that changes with the Enable
|
Shows the server configuration status
|
||||||
GPU
|
|
||||||
</p>
|
</p>
|
||||||
<div className="grid gap-2.5">
|
<div className="grid gap-2.5">
|
||||||
<StatusRow
|
<StatusRow
|
||||||
label="Docker Installed"
|
label="Docker Installed"
|
||||||
isEnabled={data?.isDockerInstalled}
|
isEnabled={data?.docker?.enabled}
|
||||||
|
description={
|
||||||
|
data?.docker?.version
|
||||||
|
? `Installed: ${data?.docker?.version}`
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
<StatusRow
|
<StatusRow
|
||||||
label="RClone Installed"
|
label="RClone Installed"
|
||||||
isEnabled={data?.isRCloneInstalled}
|
isEnabled={data?.rclone?.enabled}
|
||||||
|
description={
|
||||||
|
data?.rclone?.version
|
||||||
|
? `Installed: ${data?.rclone?.version}`
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
<StatusRow
|
<StatusRow
|
||||||
label="Nixpacks Installed"
|
label="Nixpacks Installed"
|
||||||
isEnabled={data?.isNixpacksInstalled}
|
isEnabled={data?.nixpacks?.enabled}
|
||||||
|
description={
|
||||||
|
data?.nixpacks?.version
|
||||||
|
? `Installed: ${data?.nixpacks?.version}`
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
<StatusRow
|
<StatusRow
|
||||||
label="Buildpacks Installed"
|
label="Buildpacks Installed"
|
||||||
isEnabled={data?.isBuildpacksInstalled}
|
isEnabled={data?.buildpacks?.enabled}
|
||||||
|
description={
|
||||||
|
data?.buildpacks?.version
|
||||||
|
? `Installed: ${data?.buildpacks?.version}`
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<StatusRow
|
||||||
|
label="Dokploy Network Installed"
|
||||||
|
isEnabled={data?.isDokployNetworkInstalled}
|
||||||
/>
|
/>
|
||||||
<StatusRow
|
<StatusRow
|
||||||
label="Swarm Installed"
|
label="Swarm Installed"
|
||||||
|
|||||||
@@ -132,11 +132,24 @@ export const serverRouter = createTRPCRouter({
|
|||||||
}
|
}
|
||||||
const response = await serverValidate(input.serverId);
|
const response = await serverValidate(input.serverId);
|
||||||
return response as unknown as {
|
return response as unknown as {
|
||||||
isDockerInstalled: boolean;
|
docker: {
|
||||||
isRCloneInstalled: boolean;
|
enabled: boolean;
|
||||||
|
version: string;
|
||||||
|
};
|
||||||
|
rclone: {
|
||||||
|
enabled: boolean;
|
||||||
|
version: string;
|
||||||
|
};
|
||||||
|
nixpacks: {
|
||||||
|
enabled: boolean;
|
||||||
|
version: string;
|
||||||
|
};
|
||||||
|
buildpacks: {
|
||||||
|
enabled: boolean;
|
||||||
|
version: string;
|
||||||
|
};
|
||||||
|
isDokployNetworkInstalled: boolean;
|
||||||
isSwarmInstalled: boolean;
|
isSwarmInstalled: boolean;
|
||||||
isNixpacksInstalled: boolean;
|
|
||||||
isBuildpacksInstalled: boolean;
|
|
||||||
isMainDirectoryInstalled: boolean;
|
isMainDirectoryInstalled: boolean;
|
||||||
};
|
};
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -3,17 +3,17 @@ import { findServerById } from "../services/server";
|
|||||||
|
|
||||||
export const validateDocker = () => `
|
export const validateDocker = () => `
|
||||||
if command_exists docker; then
|
if command_exists docker; then
|
||||||
echo true
|
echo "$(docker --version | awk '{print $3}' | sed 's/,//') true"
|
||||||
else
|
else
|
||||||
echo false
|
echo "0.0.0 false"
|
||||||
fi
|
fi
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export const validateRClone = () => `
|
export const validateRClone = () => `
|
||||||
if command_exists rclone; then
|
if command_exists rclone; then
|
||||||
echo true
|
echo "$(rclone --version | head -n 1 | awk '{print $2}') true"
|
||||||
else
|
else
|
||||||
echo false
|
echo "0.0.0 false"
|
||||||
fi
|
fi
|
||||||
`;
|
`;
|
||||||
|
|
||||||
@@ -27,17 +27,17 @@ export const validateSwarm = () => `
|
|||||||
|
|
||||||
export const validateNixpacks = () => `
|
export const validateNixpacks = () => `
|
||||||
if command_exists nixpacks; then
|
if command_exists nixpacks; then
|
||||||
echo true
|
echo "$(nixpacks --version | awk '{print $2}') true"
|
||||||
else
|
else
|
||||||
echo false
|
echo "0.0.0 false"
|
||||||
fi
|
fi
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export const validateBuildpacks = () => `
|
export const validateBuildpacks = () => `
|
||||||
if command_exists pack; then
|
if command_exists pack; then
|
||||||
echo true
|
echo "$(pack --version | awk '{print $1}') true"
|
||||||
else
|
else
|
||||||
echo false
|
echo "0.0.0 false"
|
||||||
fi
|
fi
|
||||||
`;
|
`;
|
||||||
|
|
||||||
@@ -48,6 +48,15 @@ export const validateMainDirectory = () => `
|
|||||||
echo false
|
echo false
|
||||||
fi
|
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) => {
|
export const serverValidate = async (serverId: string) => {
|
||||||
const client = new Client();
|
const client = new Client();
|
||||||
const server = await findServerById(serverId);
|
const server = await findServerById(serverId);
|
||||||
@@ -63,14 +72,28 @@ export const serverValidate = async (serverId: string) => {
|
|||||||
command -v "$@" > /dev/null 2>&1
|
command -v "$@" > /dev/null 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
isDockerInstalled=$(${validateDocker()})
|
dockerVersionEnabled=$(${validateDocker()})
|
||||||
isRCloneInstalled=$(${validateRClone()})
|
rcloneVersionEnabled=$(${validateRClone()})
|
||||||
isSwarmInstalled=$(${validateSwarm()})
|
nixpacksVersionEnabled=$(${validateNixpacks()})
|
||||||
isNixpacksInstalled=$(${validateNixpacks()})
|
buildpacksVersionEnabled=$(${validateBuildpacks()})
|
||||||
isBuildpacksInstalled=$(${validateBuildpacks()})
|
|
||||||
isMainDirectoryInstalled=$(${validateMainDirectory()})
|
|
||||||
|
|
||||||
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) => {
|
client.exec(bashCommand, (err, stream) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|||||||
Reference in New Issue
Block a user