From 8debce82b18e56de1dbca1e4279bf4a657db0cec Mon Sep 17 00:00:00 2001 From: yatadev <77147612+yatadev@users.noreply.github.com> Date: Mon, 12 Jul 2021 18:23:38 +0200 Subject: [PATCH 01/12] Create docker-compose.yml --- docker-compose.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..959ca7052 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3.3' + +services: + uptime-kuma: + image: louislam/uptime-kuma + container_name: uptime-kuma + volumes: + - ./uptime-kuma:/app/data + ports: + - 3001:3001 + networks: + - traefik-network From 551d00fc2428f77fa2b966be52b5b463a95f3fd3 Mon Sep 17 00:00:00 2001 From: LouisLam Date: Tue, 13 Jul 2021 10:28:07 +0800 Subject: [PATCH 02/12] add some comments and remove traefik-network from docker-composer.yml --- docker-compose.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 959ca7052..ba22bd24e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,3 +1,6 @@ +# Simple docker-composer.yml +# You can change your port or volume location + version: '3.3' services: @@ -8,5 +11,3 @@ services: - ./uptime-kuma:/app/data ports: - 3001:3001 - networks: - - traefik-network From edbab8163e94f14a162081b28d0013b76348760d Mon Sep 17 00:00:00 2001 From: LouisLam Date: Tue, 13 Jul 2021 10:31:31 +0800 Subject: [PATCH 03/12] update .editorconfig --- .editorconfig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.editorconfig b/.editorconfig index af09f8cd0..a882f5c2d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -13,3 +13,6 @@ trim_trailing_whitespace = false [*.yaml] indent_size = 2 + +[*.yml] +indent_size = 2 From 0f1a95fde932f251a0bc9df326abc5ab3d38df13 Mon Sep 17 00:00:00 2001 From: LouisLam Date: Tue, 13 Jul 2021 11:01:02 +0800 Subject: [PATCH 04/12] smtp without username password --- server/notification.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/server/notification.js b/server/notification.js index 59fb3555e..30d2df838 100644 --- a/server/notification.js +++ b/server/notification.js @@ -135,15 +135,20 @@ class Notification { static async smtp(notification, msg) { - let transporter = nodemailer.createTransport({ + let data = { host: notification.smtpHost, port: notification.smtpPort, secure: notification.smtpSecure, - auth: { + }; + + if (notification.smtpUsername) { + data.auth = { user: notification.smtpUsername, pass: notification.smtpPassword, - }, - }); + }; + } + + let transporter = nodemailer.createTransport(data); // send mail with defined transport object let info = await transporter.sendMail({ From 99afdabcacdc62772ad9cdbc87737e668c41daa8 Mon Sep 17 00:00:00 2001 From: LouisLam Date: Tue, 13 Jul 2021 11:32:09 +0800 Subject: [PATCH 05/12] change the docker base image to node:14-alpine3.14, reduce the container size --- dockerfile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dockerfile b/dockerfile index cf7dd5013..595d99f02 100644 --- a/dockerfile +++ b/dockerfile @@ -1,4 +1,8 @@ -FROM node:14 +FROM node:14-alpine3.14 + +# sqlite have to build on arm +RUN apk add --no-cache make g++ python3 +RUN ln -s /usr/bin/python3 /usr/bin/python WORKDIR /app COPY . . From 866bf5631923dc74c1042d3acd1c016948b0dcc9 Mon Sep 17 00:00:00 2001 From: LouisLam Date: Tue, 13 Jul 2021 11:32:40 +0800 Subject: [PATCH 06/12] add build-docker-nightly script --- package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.json b/package.json index 8387bcb0b..8404c0de1 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "build": "vite build", "vite-preview-dist": "vite preview --host", "build-docker": "docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.0.1 . --push", + "build-docker-nightly": "docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly . --push", "setup": "git checkout 1.0.1 && npm install && npm run build" }, "dependencies": { @@ -23,6 +24,7 @@ "redbean-node": "0.0.20", "socket.io": "^4.0.2", "socket.io-client": "^4.1.2", + "sqlite3": "^5.0.0", "tcp-ping": "^0.1.1", "vue": "^3.0.5", "vue-confirm-dialog": "^1.0.2", From fef41b44a8172a07d7477cbde68f133fd98d8675 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 13 Jul 2021 12:16:11 +0800 Subject: [PATCH 07/12] Revert "basic darkmode" --- src/assets/app.scss | 53 +++++---------------------------- src/assets/vars.scss | 26 ++-------------- src/components/HeartbeatBar.vue | 2 +- src/components/Status.vue | 11 +++---- src/components/Uptime.vue | 4 +-- src/layouts/Layout.vue | 6 ++-- src/pages/Dashboard.vue | 6 ++-- 7 files changed, 21 insertions(+), 87 deletions(-) diff --git a/src/assets/app.scss b/src/assets/app.scss index 96e1eb2ab..cb72fb9dd 100644 --- a/src/assets/app.scss +++ b/src/assets/app.scss @@ -1,46 +1,16 @@ @import "vars.scss"; @import "node_modules/bootstrap/scss/bootstrap"; -html, -body, -input, -.modal-content { - background: var(--page-background); - color: var(--main-font-color); -} -a, -.table, -.nav-link { - color: var(--main-font-color); -} -.nav-pills .nav-link.active, -.nav-pills .show > .nav-link { - color: #0a0a0a; -} - -.nav-link:hover, -.nav-link:focus { - color: #5cdd8b; -} - -.form-control, -.form-control:focus, -.form-select, -.form-select:focus { - color: var(--main-font-color); - background-color: var(--background-4); -} - #app { - font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, - segoe ui, Roboto, helvetica neue, Arial, noto sans, sans-serif, - apple color emoji, segoe ui emoji, segoe ui symbol, noto color emoji; + font-family: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji; } .shadow-box { overflow: hidden; - box-shadow: 0 15px 70px rgba(0, 0, 0, 0.1); + box-shadow: 0 15px 70px rgba(0, 0, 0, .1); padding: 10px; + border-radius: 10px; + &.big-padding { padding: 20px; } @@ -52,14 +22,10 @@ a, } .btn-primary { - // color: white; - color: #0a0a0a; + color: white; - &:hover, - &:active, - &:focus, - &.active { - color: #0a0a0a; + &:hover, &:active, &:focus, &.active { + color: white; background-color: $highlight; border-color: $highlight; } @@ -70,8 +36,3 @@ a, backdrop-filter: blur(3px); } -@media (prefers-color-scheme: dark) { - a:hover { - color: #7ce8a4; - } -} diff --git a/src/assets/vars.scss b/src/assets/vars.scss index 12b8e3745..31b0262d8 100644 --- a/src/assets/vars.scss +++ b/src/assets/vars.scss @@ -1,27 +1,7 @@ -$primary: #5cdd8b; -$danger: #dc3545; +$primary: #5CDD8B; +$danger: #DC3545; $link-color: #111; -$border-radius: .25rem; +$border-radius: 50rem; $highlight: #7ce8a4; $highlight-white: #e7faec; - -:root { - color-scheme: light dark; - // - --page-background: #fafafa; - --background-secondary: #d0d3d5; - --background-4: #d0d3d5; - --background-ternary: #d0d3d5; - --main-font-color: #212529; -} - -@media (prefers-color-scheme: dark) { - :root { - --page-background: #0a0a0a; - --background-secondary: #656565; - --background-4: #313131; - --background-ternary: #a7a7a7; - --main-font-color: #e4e4e4; - } -} \ No newline at end of file diff --git a/src/components/HeartbeatBar.vue b/src/components/HeartbeatBar.vue index 9e063fb29..48ffd2926 100644 --- a/src/components/HeartbeatBar.vue +++ b/src/components/HeartbeatBar.vue @@ -159,7 +159,7 @@ export default { border-radius: 50rem; &.empty { - background-color: var(--background-ternary); + background-color: aliceblue; } &.down { diff --git a/src/components/Status.vue b/src/components/Status.vue index 274c0a154..c5fec2241 100644 --- a/src/components/Status.vue +++ b/src/components/Status.vue @@ -1,5 +1,5 @@ diff --git a/src/components/Uptime.vue b/src/components/Uptime.vue index 0c3e90e7e..ad8114fcb 100644 --- a/src/components/Uptime.vue +++ b/src/components/Uptime.vue @@ -57,7 +57,5 @@ export default { diff --git a/src/layouts/Layout.vue b/src/layouts/Layout.vue index 8731eb07c..ef116f4c1 100644 --- a/src/layouts/Layout.vue +++ b/src/layouts/Layout.vue @@ -8,7 +8,7 @@
- + Uptime Kuma @@ -21,7 +21,7 @@
- + Uptime Kuma @@ -87,7 +87,7 @@ export default { height: 60px; width: 100%; left: 0; - background-color: var(--background-secondary); + background-color: #fff; box-shadow: 0 15px 47px 0 rgba(0, 0, 0, 0.05), 0 5px 14px 0 rgba(0, 0, 0, 0.05); text-align: center; white-space: nowrap; diff --git a/src/pages/Dashboard.vue b/src/pages/Dashboard.vue index 8c51c5ce7..c42f27656 100644 --- a/src/pages/Dashboard.vue +++ b/src/pages/Dashboard.vue @@ -129,19 +129,17 @@ export default { } &:hover { - color: var(--main-font-color); - background-color: var(--background-4); + background-color: $highlight-white; } &.active { - background-color: var(--background-secondary); + background-color: #cdf8f4; } } } .badge { min-width: 58px; - color: #0a0a0a; } .small-padding { From be1ef24ccea3a12c67b960e1d6771e7efbafdc58 Mon Sep 17 00:00:00 2001 From: LouisLam Date: Tue, 13 Jul 2021 12:24:33 +0800 Subject: [PATCH 08/12] add a comment --- dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/dockerfile b/dockerfile index 595d99f02..ac5227393 100644 --- a/dockerfile +++ b/dockerfile @@ -1,6 +1,7 @@ FROM node:14-alpine3.14 # sqlite have to build on arm +# TODO: use prebuilt sqlite for arm, because it is very very slow. RUN apk add --no-cache make g++ python3 RUN ln -s /usr/bin/python3 /usr/bin/python From 312dec7393460ad8c5cd5efc73716333dcc98560 Mon Sep 17 00:00:00 2001 From: LouisLam Date: Tue, 13 Jul 2021 12:38:59 +0800 Subject: [PATCH 09/12] add png icon --- public/icon.png | Bin 0 -> 11361 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/icon.png diff --git a/public/icon.png b/public/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4ff5fdc6ab272a83ebc7536e2dd5e10832e4efbb GIT binary patch literal 11361 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 Date: Tue, 13 Jul 2021 17:46:39 +0800 Subject: [PATCH 10/12] catch timezone error if browser do not have --- src/util-frontend.js | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/util-frontend.js b/src/util-frontend.js index 35c8ed63c..ac308a8ec 100644 --- a/src/util-frontend.js +++ b/src/util-frontend.js @@ -362,22 +362,29 @@ const aryIannaTimeZones = [ 'Pacific/Efate', 'Pacific/Wallis', 'Pacific/Apia', - 'Africa/Johannesburg' + 'Africa/Johannesburg', ]; export function timezoneList() { + let result = []; for (let timezone of aryIannaTimeZones) { - let display = dayjs().tz(timezone).format("Z"); + try { + let display = dayjs().tz(timezone).format("Z"); + + result.push({ + name: `(UTC${display}) ${timezone}`, + value: timezone, + time: getTimezoneOffset(timezone), + }) + } catch (e) { + console.log(e.message); + console.log("Skip this timezone") + } - result.push({ - name: `(UTC${display}) ${timezone}`, - value: timezone, - time: getTimezoneOffset(timezone), - }) } result.sort((a, b) => { From 010ebea21070c84a6466bbc2bdf5c8b032e5fc3e Mon Sep 17 00:00:00 2001 From: LouisLam Date: Tue, 13 Jul 2021 18:08:12 +0800 Subject: [PATCH 11/12] show version in the footer --- server/server.js | 16 ++++++---------- src/layouts/Layout.vue | 18 +++++++++++++++++- src/mixins/socket.js | 12 ++++++++++++ 3 files changed, 35 insertions(+), 11 deletions(-) diff --git a/server/server.js b/server/server.js index a03e5acbb..c335b25f2 100644 --- a/server/server.js +++ b/server/server.js @@ -14,9 +14,7 @@ const {getSettings} = require("./util-server"); const {Notification} = require("./notification") const args = require('args-parser')(process.argv); -console.log("args:") -console.log(args) - +const version = require('../package.json').version; const hostname = args.host || "0.0.0.0" const port = args.port || 3001 @@ -32,18 +30,16 @@ let needSetup = false; app.use('/', express.static("dist")); - app.post('/test-webhook', function(request, response, next) { - console.log("Test Webhook (application/json only)") - console.log("Content-Type: " + request.header("Content-Type")) - console.log(request.body) - response.end(); - }); - app.get('*', function(request, response, next) { response.sendFile(process.cwd() + '/dist/index.html'); }); io.on('connection', async (socket) => { + + socket.emit("info", { + version, + }) + console.log('a user connected'); totalClient++; diff --git a/src/layouts/Layout.vue b/src/layouts/Layout.vue index ef116f4c1..b9aca97f6 100644 --- a/src/layouts/Layout.vue +++ b/src/layouts/Layout.vue @@ -33,6 +33,14 @@ + +