Browse Source

fixed compose file volume, updated dependencies

lllllllillllllillll 1 year ago
parent
commit
53f0e2c5e9
9 changed files with 51 additions and 40 deletions
  1. 3 2
      Dockerfile
  2. 2 1
      README.md
  3. 2 2
      compose.yaml
  4. 6 0
      controllers/settings.js
  5. 29 26
      package-lock.json
  6. 3 3
      package.json
  7. 3 2
      router/index.js
  8. 1 1
      views/partials/containerFull.html
  9. 2 3
      views/settings.html

+ 3 - 2
Dockerfile

@@ -1,7 +1,8 @@
 FROM node:22-alpine
 ENV NODE_ENV=production
 WORKDIR /app
-COPY . /app
+COPY package.json /app
 RUN npm install
+COPY . /app
 EXPOSE 8000
-CMD node server.js
+CMD ["node", "server.js"]

+ 2 - 1
README.md

@@ -16,6 +16,7 @@
 
 * [x] A dynamically updating dashboard that displays server metrics along with container metrics and container controls.
 * [x] Multi-user support with permissions system.
+* [ ] Display and control docker containers from multiple remote hosts.
 * [x] Container actions: Start, Stop, Pause, Restart, View Details, View Logs.
 * [x] Windows, Linux, and MacOS compatable.
 * [x] Light/Dark Mode.
@@ -52,7 +53,7 @@ services:
     ports:
       - 8000:8000
     volumes:
-      - dweebui:/app
+      - dweebui:/app/config
       # Docker socket
       - /var/run/docker.sock:/var/run/docker.sock
       # Podman socket

+ 2 - 2
compose.yaml

@@ -2,7 +2,7 @@ version: "3.9"
 services:
   dweebui:
     container_name: dweebui
-    image: lllllllillllllillll/dweebui:v0.60
+    image: lllllllillllllillll/dweebui
     environment:
       PORT: 8000
       SECRET: MrWiskers
@@ -10,7 +10,7 @@ services:
     ports:
       - 8000:8000
     volumes:
-      - dweebui:/app
+      - dweebui:/app/config
       # Docker socket
       - /var/run/docker.sock:/var/run/docker.sock
       # Podman socket

+ 6 - 0
controllers/settings.js

@@ -7,4 +7,10 @@ export const Settings = (req, res) => {
         avatar: req.session.user.charAt(0).toUpperCase(),
         alert: '',
     });
+}
+
+
+export const settingsAction = (req, res) => {
+    let action = req.params.action;
+    res.send('ok');
 }

+ 29 - 26
package-lock.json

@@ -9,7 +9,7 @@
       "version": "0.60",
       "license": "MIT",
       "dependencies": {
-        "adm-zip": "^0.5.12",
+        "adm-zip": "^0.5.14",
         "bcrypt": "^5.1.1",
         "dockerode": "^4.0.2",
         "dockerode-compose": "^1.4.0",
@@ -20,8 +20,8 @@
         "multer": "^1.4.5-lts.1",
         "sequelize": "^6.37.3",
         "sqlite3": "^5.1.7",
-        "systeminformation": "^5.22.10",
-        "yaml": "^2.4.2"
+        "systeminformation": "^5.22.11",
+        "yaml": "^2.4.5"
       }
     },
     "node_modules/@balena/dockerignore": {
@@ -48,7 +48,7 @@
         "npmlog": "^5.0.1",
         "rimraf": "^3.0.2",
         "semver": "^7.3.5",
-        "tar": "^6.2.1"
+        "tar": "^6.1.11"
       },
       "bin": {
         "node-pre-gyp": "bin/node-pre-gyp"
@@ -113,9 +113,9 @@
       "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
     },
     "node_modules/@types/node": {
-      "version": "20.12.12",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz",
-      "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==",
+      "version": "20.14.2",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz",
+      "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==",
       "dependencies": {
         "undici-types": "~5.26.4"
       }
@@ -143,11 +143,11 @@
       }
     },
     "node_modules/adm-zip": {
-      "version": "0.5.12",
-      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.12.tgz",
-      "integrity": "sha512-6TVU49mK6KZb4qG6xWaaM4C7sA/sgUMLy/JYMOzkcp3BvVLpW0fXDFQiIzAuxFCt/2+xD7fNIiPFAoLZPhVNLQ==",
+      "version": "0.5.14",
+      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.14.tgz",
+      "integrity": "sha512-DnyqqifT4Jrcvb8USYjp6FHtBpEIz1mnXu6pTRHZ0RL69LbQYiO+0lDFg5+OKA7U29oWSs3a/i8fhn8ZcceIWg==",
       "engines": {
-        "node": ">=6.0"
+        "node": ">=12.0"
       }
     },
     "node_modules/agent-base": {
@@ -654,9 +654,9 @@
       }
     },
     "node_modules/debug": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "version": "4.3.5",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
+      "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
       "dependencies": {
         "ms": "2.1.2"
       },
@@ -1155,6 +1155,7 @@
       "version": "7.2.3",
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
       "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "deprecated": "Glob versions prior to v9 are no longer supported",
       "dependencies": {
         "fs.realpath": "^1.0.0",
         "inflight": "^1.0.4",
@@ -1366,6 +1367,7 @@
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
       "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
       "dependencies": {
         "once": "^1.3.0",
         "wrappy": "1"
@@ -1791,9 +1793,9 @@
       }
     },
     "node_modules/nan": {
-      "version": "2.19.0",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz",
-      "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==",
+      "version": "2.20.0",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz",
+      "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==",
       "optional": true
     },
     "node_modules/napi-build-utils": {
@@ -1810,9 +1812,9 @@
       }
     },
     "node_modules/node-abi": {
-      "version": "3.62.0",
-      "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.62.0.tgz",
-      "integrity": "sha512-CPMcGa+y33xuL1E0TcNIu4YyaZCxnnvkVaEXrsosR3FxN+fV8xvb7Mzpb7IgKler10qeMkE6+Dp8qJhpzdq35g==",
+      "version": "3.65.0",
+      "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz",
+      "integrity": "sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==",
       "dependencies": {
         "semver": "^7.3.5"
       },
@@ -2192,6 +2194,7 @@
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
       "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+      "deprecated": "Rimraf versions prior to v4 are no longer supported",
       "dependencies": {
         "glob": "^7.1.3"
       },
@@ -2629,9 +2632,9 @@
       }
     },
     "node_modules/systeminformation": {
-      "version": "5.22.10",
-      "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.22.10.tgz",
-      "integrity": "sha512-RJ3oed80NkqgHtpB0TLkxEKEpQ3pUm2lgVolkHeoaExPidkWsj2D/hO6Rwwi9i+Odl1vm8TMiRNIKK7hBaqDsw==",
+      "version": "5.22.11",
+      "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.22.11.tgz",
+      "integrity": "sha512-aLws5yi4KCHTb0BVvbodQY5bY8eW4asMRDTxTW46hqw9lGjACX6TlLdJrkdoHYRB0qs+MekqEq1zG7WDnWE8Ug==",
       "os": [
         "darwin",
         "linux",
@@ -2918,9 +2921,9 @@
       "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="
     },
     "node_modules/yaml": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz",
-      "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==",
+      "version": "2.4.5",
+      "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz",
+      "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==",
       "bin": {
         "yaml": "bin.mjs"
       },

+ 3 - 3
package.json

@@ -12,7 +12,7 @@
   "author": "lllllllillllllillll",
   "license": "MIT",
   "dependencies": {
-    "adm-zip": "^0.5.12",
+    "adm-zip": "^0.5.14",
     "bcrypt": "^5.1.1",
     "dockerode": "^4.0.2",
     "dockerode-compose": "^1.4.0",
@@ -23,7 +23,7 @@
     "multer": "^1.4.5-lts.1",
     "sequelize": "^6.37.3",
     "sqlite3": "^5.1.7",
-    "systeminformation": "^5.22.10",
-    "yaml": "^2.4.2"
+    "systeminformation": "^5.22.11",
+    "yaml": "^2.4.5"
   }
 }

+ 3 - 2
router/index.js

@@ -13,7 +13,7 @@ import { Networks, removeNetwork } from "../controllers/networks.js";
 import { Volumes, addVolume, removeVolume } from "../controllers/volumes.js";
 import { Account } from "../controllers/account.js";
 import { Variables } from "../controllers/variables.js";
-import { Settings } from "../controllers/settings.js";
+import { Settings, settingsAction } from "../controllers/settings.js";
 import { Supporters, Thanks } from "../controllers/supporters.js";
 import { Syslogs } from "../controllers/syslogs.js";
 import { Install } from "../utils/install.js"
@@ -97,8 +97,9 @@ router.get("/users", adminOnly, Users);
 router.get("/syslogs", adminOnly, Syslogs);
 
 router.get("/variables", adminOnly, Variables);
-router.get("/settings", adminOnly, Settings);
 
+router.get("/settings", adminOnly, Settings);
+router.post("/settings/:action", adminOnly, settingsAction);
 
 router.get("/account", sessionCheck, Account);
 router.get("/supporters", sessionCheck, Supporters);

+ 1 - 1
views/partials/containerFull.html

@@ -49,7 +49,7 @@
         </div>
         <div class="d-flex align-items-baseline">
           <div class="h1 me-2" title="AppName" style="margin-bottom: 0;">
-            <a href="http://${link}:${external_port}" target="_blank">
+            <a href="http://AppLink:AppPort" target="_blank">
               AppShortName
             </a>
           </div>

+ 2 - 3
views/settings.html

@@ -8,6 +8,7 @@
 		<!-- CSS files -->
 		<link href="/css/tabler.min.css" rel="stylesheet"/>
 		<link href="/css/demo.min.css" rel="stylesheet"/>
+		<script src="/js/htmx.min.js"></script>
 		<style>
 			@import url('/fonts/inter.css');
 			:root {
@@ -77,7 +78,7 @@
 							<div class="row align-items-center">
 								<div class="col-auto">
 									<label class="form-check form-switch form-switch-lg mt-2">
-										<input class="form-check-input" type="checkbox">
+										<input class="form-check-input" type="checkbox" id="registration" value="something" name="registration" hx-trigger="mousedown" hx-post="/settings/registration" hx-swap="none">
 										<span class="form-check-label form-check-label-on text-success">
 											Enabled
 										</span>
@@ -90,8 +91,6 @@
 									<input type="text" class="form-control" placeholder="Registration Secret">
 								</div>
 							</div>
-							
-							
 
 
 							</div>