Skip to content

Commit 012f8ff

Browse files
committed
feat: add validate server
1 parent 9a7ed91 commit 012f8ff

File tree

3 files changed

+83
-24
lines changed

3 files changed

+83
-24
lines changed

apps/dokploy/components/dashboard/settings/servers/validate-server.tsx

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,25 +73,48 @@ export const ValidateServer = ({ serverId }: Props) => {
7373
<div className="border rounded-lg p-4">
7474
<h3 className="text-lg font-semibold mb-1">Status</h3>
7575
<p className="text-sm text-muted-foreground mb-4">
76-
Shows the configuration state that changes with the Enable
77-
GPU
76+
Shows the server configuration status
7877
</p>
7978
<div className="grid gap-2.5">
8079
<StatusRow
8180
label="Docker Installed"
82-
isEnabled={data?.isDockerInstalled}
81+
isEnabled={data?.docker?.enabled}
82+
description={
83+
data?.docker?.version
84+
? `Installed: ${data?.docker?.version}`
85+
: undefined
86+
}
8387
/>
8488
<StatusRow
8589
label="RClone Installed"
86-
isEnabled={data?.isRCloneInstalled}
90+
isEnabled={data?.rclone?.enabled}
91+
description={
92+
data?.rclone?.version
93+
? `Installed: ${data?.rclone?.version}`
94+
: undefined
95+
}
8796
/>
8897
<StatusRow
8998
label="Nixpacks Installed"
90-
isEnabled={data?.isNixpacksInstalled}
99+
isEnabled={data?.nixpacks?.enabled}
100+
description={
101+
data?.nixpacks?.version
102+
? `Installed: ${data?.nixpacks?.version}`
103+
: undefined
104+
}
91105
/>
92106
<StatusRow
93107
label="Buildpacks Installed"
94-
isEnabled={data?.isBuildpacksInstalled}
108+
isEnabled={data?.buildpacks?.enabled}
109+
description={
110+
data?.buildpacks?.version
111+
? `Installed: ${data?.buildpacks?.version}`
112+
: undefined
113+
}
114+
/>
115+
<StatusRow
116+
label="Dokploy Network Installed"
117+
isEnabled={data?.isDokployNetworkInstalled}
95118
/>
96119
<StatusRow
97120
label="Swarm Installed"

apps/dokploy/server/api/routers/server.ts

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,24 @@ export const serverRouter = createTRPCRouter({
132132
}
133133
const response = await serverValidate(input.serverId);
134134
return response as unknown as {
135-
isDockerInstalled: boolean;
136-
isRCloneInstalled: boolean;
135+
docker: {
136+
enabled: boolean;
137+
version: string;
138+
};
139+
rclone: {
140+
enabled: boolean;
141+
version: string;
142+
};
143+
nixpacks: {
144+
enabled: boolean;
145+
version: string;
146+
};
147+
buildpacks: {
148+
enabled: boolean;
149+
version: string;
150+
};
151+
isDokployNetworkInstalled: boolean;
137152
isSwarmInstalled: boolean;
138-
isNixpacksInstalled: boolean;
139-
isBuildpacksInstalled: boolean;
140153
isMainDirectoryInstalled: boolean;
141154
};
142155
} catch (error) {

packages/server/src/setup/server-validate.ts

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@ import { findServerById } from "../services/server";
33

44
export const validateDocker = () => `
55
if command_exists docker; then
6-
echo true
6+
echo "$(docker --version | awk '{print $3}' | sed 's/,//') true"
77
else
8-
echo false
8+
echo "0.0.0 false"
99
fi
1010
`;
1111

1212
export const validateRClone = () => `
1313
if command_exists rclone; then
14-
echo true
14+
echo "$(rclone --version | head -n 1 | awk '{print $2}') true"
1515
else
16-
echo false
16+
echo "0.0.0 false"
1717
fi
1818
`;
1919

@@ -27,17 +27,17 @@ export const validateSwarm = () => `
2727

2828
export const validateNixpacks = () => `
2929
if command_exists nixpacks; then
30-
echo true
30+
echo "$(nixpacks --version | awk '{print $2}') true"
3131
else
32-
echo false
32+
echo "0.0.0 false"
3333
fi
3434
`;
3535

3636
export const validateBuildpacks = () => `
3737
if command_exists pack; then
38-
echo true
38+
echo "$(pack --version | awk '{print $1}') true"
3939
else
40-
echo false
40+
echo "0.0.0 false"
4141
fi
4242
`;
4343

@@ -48,6 +48,15 @@ export const validateMainDirectory = () => `
4848
echo false
4949
fi
5050
`;
51+
52+
export const validateDokployNetwork = () => `
53+
if docker network ls | grep -q 'dokploy-network'; then
54+
echo true
55+
else
56+
echo false
57+
fi
58+
`;
59+
5160
export const serverValidate = async (serverId: string) => {
5261
const client = new Client();
5362
const server = await findServerById(serverId);
@@ -63,14 +72,28 @@ export const serverValidate = async (serverId: string) => {
6372
command -v "$@" > /dev/null 2>&1
6473
}
6574
66-
isDockerInstalled=$(${validateDocker()})
67-
isRCloneInstalled=$(${validateRClone()})
75+
dockerVersionEnabled=$(${validateDocker()})
76+
rcloneVersionEnabled=$(${validateRClone()})
77+
nixpacksVersionEnabled=$(${validateNixpacks()})
78+
buildpacksVersionEnabled=$(${validateBuildpacks()})
79+
80+
dockerVersion=$(echo $dockerVersionEnabled | awk '{print $1}')
81+
dockerEnabled=$(echo $dockerVersionEnabled | awk '{print $2}')
82+
83+
rcloneVersion=$(echo $rcloneVersionEnabled | awk '{print $1}')
84+
rcloneEnabled=$(echo $rcloneVersionEnabled | awk '{print $2}')
85+
86+
nixpacksVersion=$(echo $nixpacksVersionEnabled | awk '{print $1}')
87+
nixpacksEnabled=$(echo $nixpacksVersionEnabled | awk '{print $2}')
88+
89+
buildpacksVersion=$(echo $buildpacksVersionEnabled | awk '{print $1}')
90+
buildpacksEnabled=$(echo $buildpacksVersionEnabled | awk '{print $2}')
91+
92+
isDokployNetworkInstalled=$(${validateDokployNetwork()})
6893
isSwarmInstalled=$(${validateSwarm()})
69-
isNixpacksInstalled=$(${validateNixpacks()})
70-
isBuildpacksInstalled=$(${validateBuildpacks()})
71-
isMainDirectoryInstalled=$(${validateMainDirectory()})
94+
isMainDirectoryInstalled=$(${validateMainDirectory()})
7295
73-
echo "{\\"isDockerInstalled\\": $isDockerInstalled, \\"isRCloneInstalled\\": $isRCloneInstalled, \\"isSwarmInstalled\\": $isSwarmInstalled, \\"isNixpacksInstalled\\": $isNixpacksInstalled, \\"isBuildpacksInstalled\\": $isBuildpacksInstalled, \\"isMainDirectoryInstalled\\": $isMainDirectoryInstalled}"
96+
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}"
7497
`;
7598
client.exec(bashCommand, (err, stream) => {
7699
if (err) {

0 commit comments

Comments
 (0)