swarmy 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -0
- package/bin/swarmy.js +232 -0
- package/bin/swarmy.mjs +232 -0
- package/manager/package.json +43 -0
- package/manager/src/client/App.tsx +168 -0
- package/manager/src/client/components/AllNodesView.tsx +29 -0
- package/manager/src/client/components/Breadcrumbs.tsx +63 -0
- package/manager/src/client/components/ContainerCard.tsx +36 -0
- package/manager/src/client/components/NodeCard.tsx +51 -0
- package/manager/src/client/components/NodeView.tsx +52 -0
- package/manager/src/client/components/Sidebar.tsx +152 -0
- package/manager/src/client/components/TerminalPanel.tsx +132 -0
- package/manager/src/client/components/TopBar.tsx +24 -0
- package/manager/src/client/components/VncPanel.tsx +104 -0
- package/manager/src/client/components/ui/ConfirmDialog.tsx +54 -0
- package/manager/src/client/hooks/useHashRouter.ts +37 -0
- package/manager/src/client/hooks/useLocalStorage.ts +22 -0
- package/manager/src/client/hooks/useSwarmState.ts +174 -0
- package/manager/src/client/index.css +1 -0
- package/manager/src/client/index.html +12 -0
- package/manager/src/client/lib/utils.ts +6 -0
- package/manager/src/client/main.tsx +10 -0
- package/manager/src/client/novnc.d.ts +9 -0
- package/manager/vite.config.ts +60 -0
- package/package.json +27 -0
- package/scripts/build.sh +11 -0
- package/scripts/run.sh +35 -0
- package/scripts/stop.sh +15 -0
- package/worker/package.json +23 -0
package/package.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "swarmy",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Distributed container management with browser-based VNC and terminal access",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"swarmy": "./bin/swarmy.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "cd manager && npm install && npm run build && cd ../worker && npm install && npm run build",
|
|
11
|
+
"postinstall": "npm run build"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"bin/",
|
|
15
|
+
"manager/dist/",
|
|
16
|
+
"manager/package.json",
|
|
17
|
+
"manager/node_modules/",
|
|
18
|
+
"manager/vite.config.ts",
|
|
19
|
+
"manager/src/client/",
|
|
20
|
+
"worker/dist/",
|
|
21
|
+
"worker/package.json",
|
|
22
|
+
"worker/node_modules/",
|
|
23
|
+
"scripts/"
|
|
24
|
+
],
|
|
25
|
+
"keywords": ["docker", "vnc", "terminal", "container", "management"],
|
|
26
|
+
"license": "MIT"
|
|
27
|
+
}
|
package/scripts/build.sh
ADDED
package/scripts/run.sh
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
|
5
|
+
echo "Usage: scripts/run.sh [NAME]"
|
|
6
|
+
echo ""
|
|
7
|
+
echo "Start a swarm-base container with Chrome + noVNC."
|
|
8
|
+
echo ""
|
|
9
|
+
echo "Arguments:"
|
|
10
|
+
echo " NAME Container name (default: swarm-base)"
|
|
11
|
+
echo ""
|
|
12
|
+
echo "Environment variables:"
|
|
13
|
+
echo " PORT noVNC port (default: 6080)"
|
|
14
|
+
echo " RESOLUTION Screen resolution (default: 1920x1080)"
|
|
15
|
+
echo ""
|
|
16
|
+
echo "Examples:"
|
|
17
|
+
echo " scripts/run.sh"
|
|
18
|
+
echo " scripts/run.sh my-browser"
|
|
19
|
+
echo " PORT=8080 RESOLUTION=1280x720 scripts/run.sh"
|
|
20
|
+
exit 0
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
NAME="${1:-swarm-base}"
|
|
24
|
+
PORT="${PORT:-6080}"
|
|
25
|
+
RESOLUTION="${RESOLUTION:-1920x1080}"
|
|
26
|
+
|
|
27
|
+
docker stop "$NAME" 2>/dev/null && docker rm "$NAME" 2>/dev/null || true
|
|
28
|
+
|
|
29
|
+
docker run -d \
|
|
30
|
+
--name "$NAME" \
|
|
31
|
+
-p "$PORT":6080 \
|
|
32
|
+
-e RESOLUTION="$RESOLUTION" \
|
|
33
|
+
swarm-base
|
|
34
|
+
|
|
35
|
+
echo "noVNC: http://localhost:$PORT/vnc.html?autoconnect=true"
|
package/scripts/stop.sh
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
|
4
|
+
echo "Usage: scripts/stop.sh [NAME]"
|
|
5
|
+
echo ""
|
|
6
|
+
echo "Stop and remove a swarm-base container."
|
|
7
|
+
echo ""
|
|
8
|
+
echo "Arguments:"
|
|
9
|
+
echo " NAME Container name (default: swarm-base)"
|
|
10
|
+
exit 0
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
NAME="${1:-swarm-base}"
|
|
14
|
+
|
|
15
|
+
docker stop "$NAME" 2>/dev/null && docker rm "$NAME" 2>/dev/null || echo "Container '$NAME' not running"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "swarm-worker",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "tsx src/index.ts",
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"start": "node dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"dockerode": "^4.0.4",
|
|
13
|
+
"node-pty": "^1.2.0-beta.11",
|
|
14
|
+
"ws": "^8.18.0"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@types/dockerode": "^3.3.31",
|
|
18
|
+
"@types/node": "^22.10.0",
|
|
19
|
+
"@types/ws": "^8.5.13",
|
|
20
|
+
"tsx": "^4.19.0",
|
|
21
|
+
"typescript": "^5.7.0"
|
|
22
|
+
}
|
|
23
|
+
}
|