From 7c62eb5bd64a1670080423651a119bc9cfda6bc5 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 2 Mar 2022 13:38:45 +0100 Subject: [PATCH 01/15] feat: Send version with update request --- src/routes/update.json.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/routes/update.json.ts b/src/routes/update.json.ts index 2bcd5681a..42f4dd6ee 100644 --- a/src/routes/update.json.ts +++ b/src/routes/update.json.ts @@ -10,7 +10,9 @@ export const get: RequestHandler = async (request) => { try { const currentVersion = version; const versions = await got - .get(`https://get.coollabs.io/versions.json?appId=${process.env['COOLIFY_APP_ID']}`) + .get( + `https://get.coollabs.io/versions.json?appId=${process.env['COOLIFY_APP_ID']}&version=${currentVersion}` + ) .json(); const latestVersion = request.url.hostname === 'staging.coolify.io' From 1d01405412ffe94f8a24da409fabeda6179386bc Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 2 Mar 2022 13:38:58 +0100 Subject: [PATCH 02/15] chore: Version++ --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b3cb422fa..e51273102 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "coolify", "description": "An open-source & self-hostable Heroku / Netlify alternative.", - "version": "2.0.26", + "version": "2.0.27", "license": "AGPL-3.0", "scripts": { "dev": "docker-compose -f docker-compose-dev.yaml up -d && NODE_ENV=development svelte-kit dev --host 0.0.0.0", From d266f761aa85376879cd59fce59bf9de9a5d6b23 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 2 Mar 2022 14:38:51 +0100 Subject: [PATCH 03/15] Stats open with auth --- src/routes/settings/index.svelte | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/routes/settings/index.svelte b/src/routes/settings/index.svelte index bf6ee64c3..d4b561ebf 100644 --- a/src/routes/settings/index.svelte +++ b/src/routes/settings/index.svelte @@ -189,8 +189,11 @@ stats page.`} />
From d9fcaf3473d32f6557833256df4715e056f8d3ec Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 2 Mar 2022 14:53:33 +0100 Subject: [PATCH 04/15] update packages --- package.json | 24 +- pnpm-lock.yaml | 264 ++++++++++---------- src/lib/components/CopyPasswordField.svelte | 2 +- 3 files changed, 145 insertions(+), 145 deletions(-) diff --git a/package.json b/package.json index e51273102..3cdad52a4 100644 --- a/package.json +++ b/package.json @@ -25,12 +25,12 @@ "prepare": "husky install" }, "devDependencies": { - "@sveltejs/adapter-node": "1.0.0-next.69", + "@sveltejs/adapter-node": "1.0.0-next.70", "@sveltejs/adapter-static": "1.0.0-next.28", - "@sveltejs/kit": "1.0.0-next.283", + "@sveltejs/kit": "1.0.0-next.288", "@types/bcrypt": "5.0.0", "@types/js-cookie": "3.0.1", - "@types/node": "17.0.20", + "@types/node": "17.0.21", "@types/node-forge": "1.0.0", "@typescript-eslint/eslint-plugin": "4.31.1", "@typescript-eslint/parser": "4.31.1", @@ -39,37 +39,37 @@ "cross-var": "1.1.0", "eslint": "7.32.0", "eslint-config-prettier": "8.4.0", - "eslint-plugin-svelte3": "3.4.0", + "eslint-plugin-svelte3": "3.4.1", "husky": "7.0.4", "lint-staged": "12.3.4", - "postcss": "8.4.6", + "postcss": "8.4.7", "prettier": "2.5.1", "prettier-plugin-svelte": "2.6.0", - "prettier-plugin-tailwindcss": "0.1.7", + "prettier-plugin-tailwindcss": "0.1.8", "prisma": "3.10.0", "svelte": "3.46.4", "svelte-check": "2.4.5", "svelte-preprocess": "4.10.4", "tailwindcss": "3.0.23", - "ts-node": "10.5.0", + "ts-node": "10.6.0", "tslib": "2.3.1", - "typescript": "4.5.5" + "typescript": "4.6.2" }, "type": "module", "dependencies": { "@iarna/toml": "2.2.5", "@prisma/client": "3.10.0", - "@sentry/node": "6.17.9", + "@sentry/node": "6.18.1", "bcrypt": "5.0.1", - "bullmq": "1.74.2", + "bullmq": "1.76.0", "compare-versions": "4.1.3", "cookie": "0.4.2", "cuid": "2.1.8", - "dayjs": "1.10.7", + "dayjs": "1.10.8", "dockerode": "3.3.1", "dotenv-extended": "2.9.0", "generate-password": "1.7.0", - "get-port": "6.1.1", + "get-port": "6.1.2", "got": "12.0.1", "js-cookie": "3.0.1", "js-yaml": "4.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a9411c6f3..8f9bac811 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3,32 +3,32 @@ lockfileVersion: 5.3 specifiers: '@iarna/toml': 2.2.5 '@prisma/client': 3.10.0 - '@sentry/node': 6.17.9 - '@sveltejs/adapter-node': 1.0.0-next.69 + '@sentry/node': 6.18.1 + '@sveltejs/adapter-node': 1.0.0-next.70 '@sveltejs/adapter-static': 1.0.0-next.28 - '@sveltejs/kit': 1.0.0-next.283 + '@sveltejs/kit': 1.0.0-next.288 '@types/bcrypt': 5.0.0 '@types/js-cookie': 3.0.1 - '@types/node': 17.0.20 + '@types/node': 17.0.21 '@types/node-forge': 1.0.0 '@typescript-eslint/eslint-plugin': 4.31.1 '@typescript-eslint/parser': 4.31.1 '@zerodevx/svelte-toast': 0.7.0 autoprefixer: 10.4.2 bcrypt: 5.0.1 - bullmq: 1.74.2 + bullmq: 1.76.0 compare-versions: 4.1.3 cookie: 0.4.2 cross-var: 1.1.0 cuid: 2.1.8 - dayjs: 1.10.7 + dayjs: 1.10.8 dockerode: 3.3.1 dotenv-extended: 2.9.0 eslint: 7.32.0 eslint-config-prettier: 8.4.0 - eslint-plugin-svelte3: 3.4.0 + eslint-plugin-svelte3: 3.4.1 generate-password: 1.7.0 - get-port: 6.1.1 + get-port: 6.1.2 got: 12.0.1 husky: 7.0.4 js-cookie: 3.0.1 @@ -37,10 +37,10 @@ specifiers: lint-staged: 12.3.4 mustache: ^4.2.0 node-forge: 1.2.1 - postcss: 8.4.6 + postcss: 8.4.7 prettier: 2.5.1 prettier-plugin-svelte: 2.6.0 - prettier-plugin-tailwindcss: 0.1.7 + prettier-plugin-tailwindcss: 0.1.8 prisma: 3.10.0 svelte: 3.46.4 svelte-check: 2.4.5 @@ -48,25 +48,25 @@ specifiers: svelte-preprocess: 4.10.4 tailwindcss: 3.0.23 tailwindcss-scrollbar: ^0.1.0 - ts-node: 10.5.0 + ts-node: 10.6.0 tslib: 2.3.1 - typescript: 4.5.5 + typescript: 4.6.2 unique-names-generator: 4.7.1 dependencies: '@iarna/toml': 2.2.5 '@prisma/client': 3.10.0_prisma@3.10.0 - '@sentry/node': 6.17.9 + '@sentry/node': 6.18.1 bcrypt: 5.0.1 - bullmq: 1.74.2 + bullmq: 1.76.0 compare-versions: 4.1.3 cookie: 0.4.2 cuid: 2.1.8 - dayjs: 1.10.7 + dayjs: 1.10.8 dockerode: 3.3.1 dotenv-extended: 2.9.0 generate-password: 1.7.0 - get-port: 6.1.1 + get-port: 6.1.2 got: 12.0.1 js-cookie: 3.0.1 js-yaml: 4.1.0 @@ -78,35 +78,35 @@ dependencies: unique-names-generator: 4.7.1 devDependencies: - '@sveltejs/adapter-node': 1.0.0-next.69 + '@sveltejs/adapter-node': 1.0.0-next.70 '@sveltejs/adapter-static': 1.0.0-next.28 - '@sveltejs/kit': 1.0.0-next.283_svelte@3.46.4 + '@sveltejs/kit': 1.0.0-next.288_svelte@3.46.4 '@types/bcrypt': 5.0.0 '@types/js-cookie': 3.0.1 - '@types/node': 17.0.20 + '@types/node': 17.0.21 '@types/node-forge': 1.0.0 - '@typescript-eslint/eslint-plugin': 4.31.1_5d7752337e5ea49772097d8af1823bf9 - '@typescript-eslint/parser': 4.31.1_eslint@7.32.0+typescript@4.5.5 + '@typescript-eslint/eslint-plugin': 4.31.1_386b67ad67ef29c6a0ccaf3e9b60f945 + '@typescript-eslint/parser': 4.31.1_eslint@7.32.0+typescript@4.6.2 '@zerodevx/svelte-toast': 0.7.0 - autoprefixer: 10.4.2_postcss@8.4.6 + autoprefixer: 10.4.2_postcss@8.4.7 cross-var: 1.1.0 eslint: 7.32.0 eslint-config-prettier: 8.4.0_eslint@7.32.0 - eslint-plugin-svelte3: 3.4.0_eslint@7.32.0+svelte@3.46.4 + eslint-plugin-svelte3: 3.4.1_eslint@7.32.0+svelte@3.46.4 husky: 7.0.4 lint-staged: 12.3.4 - postcss: 8.4.6 + postcss: 8.4.7 prettier: 2.5.1 prettier-plugin-svelte: 2.6.0_prettier@2.5.1+svelte@3.46.4 - prettier-plugin-tailwindcss: 0.1.7_prettier@2.5.1 + prettier-plugin-tailwindcss: 0.1.8_prettier@2.5.1 prisma: 3.10.0 svelte: 3.46.4 - svelte-check: 2.4.5_postcss@8.4.6+svelte@3.46.4 - svelte-preprocess: 4.10.4_88b359da5cac6d8f6ee1bbb7080a3fa9 - tailwindcss: 3.0.23_c940fbabf228b85b1c73d314b43e31f1 - ts-node: 10.5.0_e04e69b201f218c8d0d59acefc9ea8a6 + svelte-check: 2.4.5_postcss@8.4.7+svelte@3.46.4 + svelte-preprocess: 4.10.4_e836cbb8ceb5bfaa7513362dd6308834 + tailwindcss: 3.0.23_4b9e11f8e85900587b5e2272c5d4c20c + ts-node: 10.6.0_e79e62fe450383fd2d418267dc75e645 tslib: 2.3.1 - typescript: 4.5.5 + typescript: 4.6.2 packages: /@babel/code-frame/7.12.11: @@ -297,56 +297,56 @@ packages: picomatch: 2.3.0 dev: true - /@sentry/core/6.17.9: + /@sentry/core/6.18.1: resolution: { - integrity: sha512-14KalmTholGUtgdh9TklO+jUpyQ/D3OGkhlH1rnGQGoJgFy2eYm+s+MnUEMxFdGIUCz5kOteuNqYZxaDmFagpQ== + integrity: sha512-9V8Q+3Asi+3RL67CSIMMZ9mjMsu2/hrpQszYStX7hPPpAZIlAKk2MT5B+na/r80iWKhy+3Ts6aDFF218QtnsVw== } engines: { node: '>=6' } dependencies: - '@sentry/hub': 6.17.9 - '@sentry/minimal': 6.17.9 - '@sentry/types': 6.17.9 - '@sentry/utils': 6.17.9 + '@sentry/hub': 6.18.1 + '@sentry/minimal': 6.18.1 + '@sentry/types': 6.18.1 + '@sentry/utils': 6.18.1 tslib: 1.14.1 dev: false - /@sentry/hub/6.17.9: + /@sentry/hub/6.18.1: resolution: { - integrity: sha512-34EdrweWDbBV9EzEFIXcO+JeoyQmKzQVJxpTKZoJA6PUwf2NrndaUdjlkDEtBEzjuLUTxhLxtOzEsYs1O6RVcg== + integrity: sha512-+zGzgc/xX3an/nKA3ELMn9YD9VmqbNaNwWZ5/SjNUvzsYHh2UNZ7YzT8WawQsRVOXLljyCKxkWpFB4EchiYGbw== } engines: { node: '>=6' } dependencies: - '@sentry/types': 6.17.9 - '@sentry/utils': 6.17.9 + '@sentry/types': 6.18.1 + '@sentry/utils': 6.18.1 tslib: 1.14.1 dev: false - /@sentry/minimal/6.17.9: + /@sentry/minimal/6.18.1: resolution: { - integrity: sha512-T3PMCHcKk6lkZq6zKgANrYJJxXBXKOe+ousV1Fas1rVBMv7dtKfsa4itqQHszcW9shusPDiaQKIJ4zRLE5LKmg== + integrity: sha512-dm+0MuasWNi/LASvHX+09oCo8IBZY5WpMK8qXvQMnwQ9FVfklrjcfEI3666WORDCmeUhDCSeL2MbjPDm+AmPLg== } engines: { node: '>=6' } dependencies: - '@sentry/hub': 6.17.9 - '@sentry/types': 6.17.9 + '@sentry/hub': 6.18.1 + '@sentry/types': 6.18.1 tslib: 1.14.1 dev: false - /@sentry/node/6.17.9: + /@sentry/node/6.18.1: resolution: { - integrity: sha512-jbn+q7qPGOh6D7nYoYGaAlmuvMDpQmyMwBtUVYybuZp2AALe43O3Z4LtoJ+1+F31XowpsIPZx1mwNs4ZrILskA== + integrity: sha512-aTb2gwfZUq0lGDRGH5zNOYDfFMOQZu6E0QcAsvH2ZBcEj3rUWZz3r25COFrHmfzHLUV1KcF2AmnWo1QU1jmm0g== } engines: { node: '>=6' } dependencies: - '@sentry/core': 6.17.9 - '@sentry/hub': 6.17.9 - '@sentry/tracing': 6.17.9 - '@sentry/types': 6.17.9 - '@sentry/utils': 6.17.9 + '@sentry/core': 6.18.1 + '@sentry/hub': 6.18.1 + '@sentry/tracing': 6.18.1 + '@sentry/types': 6.18.1 + '@sentry/utils': 6.18.1 cookie: 0.4.2 https-proxy-agent: 5.0.0 lru_map: 0.3.3 @@ -355,36 +355,36 @@ packages: - supports-color dev: false - /@sentry/tracing/6.17.9: + /@sentry/tracing/6.18.1: resolution: { - integrity: sha512-5Rb/OS4ryNJLvz2nv6wyjwhifjy6veqaF9ffLrwFYij/WDy7m62ASBblxgeiI3fbPLX0aBRFWIJAq1vko26+AQ== + integrity: sha512-OxozmSfxGx246Ae1XhO01I7ZWxO3briwMBh55E5KyjQb8fuS9gVE7Uy8ZRs5hhNjDutFAU7nMtC0zipfVxP6fg== } engines: { node: '>=6' } dependencies: - '@sentry/hub': 6.17.9 - '@sentry/minimal': 6.17.9 - '@sentry/types': 6.17.9 - '@sentry/utils': 6.17.9 + '@sentry/hub': 6.18.1 + '@sentry/minimal': 6.18.1 + '@sentry/types': 6.18.1 + '@sentry/utils': 6.18.1 tslib: 1.14.1 dev: false - /@sentry/types/6.17.9: + /@sentry/types/6.18.1: resolution: { - integrity: sha512-xuulX6qUCL14ayEOh/h6FUIvZtsi1Bx34dSOaWDrjXUOJHJAM7214uiqW1GZxPJ13YuaUIubjTSfDmSQ9CBzTw== + integrity: sha512-wp741NoBKnXE/4T9L723sWJ8EcNMxeTIT1smgNJOfbPwrsDICoYmGEt6JFa05XHpWBGI66WuNvnDjoHVeh6zhA== } engines: { node: '>=6' } dev: false - /@sentry/utils/6.17.9: + /@sentry/utils/6.18.1: resolution: { - integrity: sha512-4eo9Z3JlJCGlGrQRbtZWL+L9NnlUXgTbfK3Lk7oO8D1ev8R5b5+iE6tZHTvU5rQRcq6zu+POT+tK5u9oxc/rnQ== + integrity: sha512-IFZmuvA+c5lDGlZEri13JSyUP0BHelzY0S4dcKxAzskPW+BtBdQDgYGV90iED1y+IRMLawWb34GF7HyJSouN1Q== } engines: { node: '>=6' } dependencies: - '@sentry/types': 6.17.9 + '@sentry/types': 6.18.1 tslib: 1.14.1 dev: false @@ -396,10 +396,10 @@ packages: engines: { node: '>=10' } dev: false - /@sveltejs/adapter-node/1.0.0-next.69: + /@sveltejs/adapter-node/1.0.0-next.70: resolution: { - integrity: sha512-tVKwJ8vYG4NGFJ5L+tRuyRglGPaJ1khNqTKq4bYIUahk/pjXIu9USbMmFtNHd6IyDdxjPtRoVwHubAYfTQLTpg== + integrity: sha512-9EtqSTxVOipESyPQH8uVdkl+iSqsq3oRKS3RZoE2vAG9I849MuTTxr1g9L4kALbXaklsYRztwhmrLpTdcSM4vA== } dependencies: tiny-glob: 0.2.9 @@ -414,10 +414,10 @@ packages: tiny-glob: 0.2.9 dev: true - /@sveltejs/kit/1.0.0-next.283_svelte@3.46.4: + /@sveltejs/kit/1.0.0-next.288_svelte@3.46.4: resolution: { - integrity: sha512-QFhL7cdBKXUKhJ3sHZnL7q07Eohc54N7OpX2ZsJuNTA43Z6vX/HF/Jh4TK62kqT+thDVlT5J1iEEMppxA2IxoQ== + integrity: sha512-6ky4CUFNGKoU1QV+fY2LOIB7atHdUCIMRx3pX21B2g9yZzQzkot0zHBrMMBSKF0/4Wx19PLEWrlGxlhakYmi8Q== } engines: { node: '>=14.13' } hasBin: true @@ -506,7 +506,7 @@ packages: integrity: sha512-agtcFKaruL8TmcvqbndlqHPSJgsolhf/qPWchFlgnW1gECTN/nKbFcoFnvKAQRFfKbh+BO6A3SWdJu9t+xF3Lw== } dependencies: - '@types/node': 17.0.20 + '@types/node': 17.0.21 dev: true /@types/cacheable-request/6.0.2: @@ -517,7 +517,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.3 - '@types/node': 17.0.20 + '@types/node': 17.0.21 '@types/responselike': 1.0.0 dev: false @@ -548,7 +548,7 @@ packages: integrity: sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg== } dependencies: - '@types/node': 17.0.20 + '@types/node': 17.0.21 dev: false /@types/node-forge/1.0.0: @@ -557,13 +557,13 @@ packages: integrity: sha512-h0bgwPKq5u99T9Gor4qtV1lCZ41xNkai0pie1n/a2mh2/4+jENWOlo7AJ4YKxTZAnSZ8FRurUpdIN7ohaPPuHA== } dependencies: - '@types/node': 17.0.20 + '@types/node': 17.0.21 dev: true - /@types/node/17.0.20: + /@types/node/17.0.21: resolution: { - integrity: sha512-Q15Clj3lZSLnhVA6yKw1G7SQz46DeL9gO1TEgfK1OQGvMdQ6TUWmCeWf1QBUNkw2BDfV52i2YuYd9OF3ZwGhjw== + integrity: sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ== } /@types/parse-json/4.0.0: @@ -586,7 +586,7 @@ packages: integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== } dependencies: - '@types/node': 17.0.20 + '@types/node': 17.0.21 dev: false /@types/sass/1.16.1: @@ -595,10 +595,10 @@ packages: integrity: sha512-iZUcRrGuz/Tbg3loODpW7vrQJkUtpY2fFSf4ELqqkApcS2TkZ1msk7ie8iZPB86lDOP8QOTTmuvWjc5S0R9OjQ== } dependencies: - '@types/node': 17.0.20 + '@types/node': 17.0.21 dev: true - /@typescript-eslint/eslint-plugin/4.31.1_5d7752337e5ea49772097d8af1823bf9: + /@typescript-eslint/eslint-plugin/4.31.1_386b67ad67ef29c6a0ccaf3e9b60f945: resolution: { integrity: sha512-UDqhWmd5i0TvPLmbK5xY3UZB0zEGseF+DHPghZ37Sb83Qd3p8ujhvAtkU4OF46Ka5Pm5kWvFIx0cCTBFKo0alA== @@ -612,21 +612,21 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 4.31.1_eslint@7.32.0+typescript@4.5.5 - '@typescript-eslint/parser': 4.31.1_eslint@7.32.0+typescript@4.5.5 + '@typescript-eslint/experimental-utils': 4.31.1_eslint@7.32.0+typescript@4.6.2 + '@typescript-eslint/parser': 4.31.1_eslint@7.32.0+typescript@4.6.2 '@typescript-eslint/scope-manager': 4.31.1 debug: 4.3.3 eslint: 7.32.0 functional-red-black-tree: 1.0.1 regexpp: 3.2.0 semver: 7.3.5 - tsutils: 3.21.0_typescript@4.5.5 - typescript: 4.5.5 + tsutils: 3.21.0_typescript@4.6.2 + typescript: 4.6.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/4.31.1_eslint@7.32.0+typescript@4.5.5: + /@typescript-eslint/experimental-utils/4.31.1_eslint@7.32.0+typescript@4.6.2: resolution: { integrity: sha512-NtoPsqmcSsWty0mcL5nTZXMf7Ei0Xr2MT8jWjXMVgRK0/1qeQ2jZzLFUh4QtyJ4+/lPUyMw5cSfeeME+Zrtp9Q== @@ -638,7 +638,7 @@ packages: '@types/json-schema': 7.0.9 '@typescript-eslint/scope-manager': 4.31.1 '@typescript-eslint/types': 4.31.1 - '@typescript-eslint/typescript-estree': 4.31.1_typescript@4.5.5 + '@typescript-eslint/typescript-estree': 4.31.1_typescript@4.6.2 eslint: 7.32.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@7.32.0 @@ -647,7 +647,7 @@ packages: - typescript dev: true - /@typescript-eslint/parser/4.31.1_eslint@7.32.0+typescript@4.5.5: + /@typescript-eslint/parser/4.31.1_eslint@7.32.0+typescript@4.6.2: resolution: { integrity: sha512-dnVZDB6FhpIby6yVbHkwTKkn2ypjVIfAR9nh+kYsA/ZL0JlTsd22BiDjouotisY3Irmd3OW1qlk9EI5R8GrvRQ== @@ -662,10 +662,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 4.31.1 '@typescript-eslint/types': 4.31.1 - '@typescript-eslint/typescript-estree': 4.31.1_typescript@4.5.5 + '@typescript-eslint/typescript-estree': 4.31.1_typescript@4.6.2 debug: 4.3.3 eslint: 7.32.0 - typescript: 4.5.5 + typescript: 4.6.2 transitivePeerDependencies: - supports-color dev: true @@ -689,7 +689,7 @@ packages: engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } dev: true - /@typescript-eslint/typescript-estree/4.31.1_typescript@4.5.5: + /@typescript-eslint/typescript-estree/4.31.1_typescript@4.6.2: resolution: { integrity: sha512-EGHkbsUvjFrvRnusk6yFGqrqMBTue5E5ROnS5puj3laGQPasVUgwhrxfcgkdHNFECHAewpvELE1Gjv0XO3mdWg== @@ -707,8 +707,8 @@ packages: globby: 11.0.4 is-glob: 4.0.3 semver: 7.3.5 - tsutils: 3.21.0_typescript@4.5.5 - typescript: 4.5.5 + tsutils: 3.21.0_typescript@4.6.2 + typescript: 4.6.2 transitivePeerDependencies: - supports-color dev: true @@ -1010,7 +1010,7 @@ packages: typpy: 2.3.11 dev: false - /autoprefixer/10.4.2_postcss@8.4.6: + /autoprefixer/10.4.2_postcss@8.4.7: resolution: { integrity: sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ== @@ -1025,7 +1025,7 @@ packages: fraction.js: 4.1.2 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.6 + postcss: 8.4.7 postcss-value-parser: 4.2.0 dev: true @@ -1750,10 +1750,10 @@ packages: ieee754: 1.2.1 dev: false - /bullmq/1.74.2: + /bullmq/1.76.0: resolution: { - integrity: sha512-qf0xjF3NDbZqi6ovxAA9QPrPdEgl3BrdYzQO5Pr+ECNIfscLpSXz87kVXI0oTPeDqxw5EJx4sh8EFf2RvVPYTg== + integrity: sha512-e9No/JiE7B+wnLsoZnVBLTKTfc1An3bnuIaWewhjDImYNFq5aU/YmzoCdJRgUXrRWGc3EnATFSOLHiEY6Z2FpA== } dependencies: cron-parser: 2.18.0 @@ -2138,10 +2138,10 @@ packages: } dev: false - /dayjs/1.10.7: + /dayjs/1.10.8: resolution: { - integrity: sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== + integrity: sha512-wbNwDfBHHur9UOzNUjeKUOJ0fCb0a52Wx0xInmQ7Y8FstyajiV1NmK1e00cxsr9YrE9r7yAChE0VvpuY5Rnlow== } dev: false @@ -2720,10 +2720,10 @@ packages: eslint: 7.32.0 dev: true - /eslint-plugin-svelte3/3.4.0_eslint@7.32.0+svelte@3.46.4: + /eslint-plugin-svelte3/3.4.1_eslint@7.32.0+svelte@3.46.4: resolution: { - integrity: sha512-MIQUTuRv3o7LyQ+360qOc9mLT35j1I5YzHr04g/UDcvJTpg0X/kHWELY99ve869Rp/9wjqD7I26Aq5H8OH5RIg== + integrity: sha512-7p59WG8qV8L6wLdl4d/c3mdjkgVglQCdv5XOTk/iNPBKXuuV+Q0eFP5Wa6iJd/G2M1qR3BkLPEzaANOqKAZczw== } engines: { node: '>=10' } peerDependencies: @@ -3118,10 +3118,10 @@ packages: engines: { node: '>=8' } dev: false - /get-port/6.1.1: + /get-port/6.1.2: resolution: { - integrity: sha512-RQOsDPSd2PcoLwakY1dwEtLiAbTR7IfmnxsKswfcHEfRKKbhWAG2R5Qo7C8ga6Ne4Mq4lFbogXfDGNfqFxwAaw== + integrity: sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw== } engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } dev: false @@ -4109,10 +4109,10 @@ packages: dev: false optional: true - /nanoid/3.2.0: + /nanoid/3.3.1: resolution: { - integrity: sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== + integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== } engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } hasBin: true @@ -4382,7 +4382,7 @@ packages: engines: { node: '>=8.6' } dev: true - /postcss-js/4.0.0_postcss@8.4.6: + /postcss-js/4.0.0_postcss@8.4.7: resolution: { integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== @@ -4392,10 +4392,10 @@ packages: postcss: ^8.3.3 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.6 + postcss: 8.4.7 dev: true - /postcss-load-config/3.1.0_ts-node@10.5.0: + /postcss-load-config/3.1.0_ts-node@10.6.0: resolution: { integrity: sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g== @@ -4409,11 +4409,11 @@ packages: dependencies: import-cwd: 3.0.0 lilconfig: 2.0.4 - ts-node: 10.5.0_e04e69b201f218c8d0d59acefc9ea8a6 + ts-node: 10.6.0_e79e62fe450383fd2d418267dc75e645 yaml: 1.10.2 dev: true - /postcss-nested/5.0.6_postcss@8.4.6: + /postcss-nested/5.0.6_postcss@8.4.7: resolution: { integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== @@ -4422,7 +4422,7 @@ packages: peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.6 + postcss: 8.4.7 postcss-selector-parser: 6.0.9 dev: true @@ -4444,14 +4444,14 @@ packages: } dev: true - /postcss/8.4.6: + /postcss/8.4.7: resolution: { - integrity: sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA== + integrity: sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A== } engines: { node: ^10 || ^12 || >=14 } dependencies: - nanoid: 3.2.0 + nanoid: 3.3.1 picocolors: 1.0.0 source-map-js: 1.0.2 dev: true @@ -4477,10 +4477,10 @@ packages: svelte: 3.46.4 dev: true - /prettier-plugin-tailwindcss/0.1.7_prettier@2.5.1: + /prettier-plugin-tailwindcss/0.1.8_prettier@2.5.1: resolution: { - integrity: sha512-tmBr45hCLuit2Cz9Pwow0/Jl1bGivYGsfcF29O+3sKcE++ybjz9dfie565S3ZsvAeV8uYer9SRMBWDsHPly2Lg== + integrity: sha512-hwarSBCswAXa+kqYtaAkFr3Vop9o04WOyZs0qo3NyvW8L7f1rif61wRyq0+ArmVThOuRBcJF5hjGXYk86cwemg== } engines: { node: '>=12.17.0' } peerDependencies: @@ -5172,7 +5172,7 @@ packages: engines: { node: '>= 0.4' } dev: true - /svelte-check/2.4.5_postcss@8.4.6+svelte@3.46.4: + /svelte-check/2.4.5_postcss@8.4.7+svelte@3.46.4: resolution: { integrity: sha512-nRft8BbG2wcxyCdHDZ7X43xLcvDzua3xLwq6wzHGcAF3ka3Jyhv2rvgq0+SF9NwHLMefp9C2XkM6etzsxK/cMQ== @@ -5189,8 +5189,8 @@ packages: sade: 1.7.4 source-map: 0.7.3 svelte: 3.46.4 - svelte-preprocess: 4.10.4_88b359da5cac6d8f6ee1bbb7080a3fa9 - typescript: 4.5.5 + svelte-preprocess: 4.10.4_e836cbb8ceb5bfaa7513362dd6308834 + typescript: 4.6.2 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -5222,7 +5222,7 @@ packages: } dev: false - /svelte-preprocess/4.10.4_88b359da5cac6d8f6ee1bbb7080a3fa9: + /svelte-preprocess/4.10.4_e836cbb8ceb5bfaa7513362dd6308834: resolution: { integrity: sha512-fuwol0N4UoHsNQolLFbMqWivqcJ9N0vfWO9IuPAiX/5okfoGXURyJ6nECbuEIv0nU3M8Xe2I1ONNje2buk7l6A== @@ -5270,11 +5270,11 @@ packages: '@types/sass': 1.16.1 detect-indent: 6.1.0 magic-string: 0.25.7 - postcss: 8.4.6 + postcss: 8.4.7 sorcery: 0.10.0 strip-indent: 3.0.0 svelte: 3.46.4 - typescript: 4.5.5 + typescript: 4.6.2 dev: true /svelte/3.46.4: @@ -5308,10 +5308,10 @@ packages: peerDependencies: tailwindcss: '>= 2.x.x' dependencies: - tailwindcss: 3.0.23_c940fbabf228b85b1c73d314b43e31f1 + tailwindcss: 3.0.23_4b9e11f8e85900587b5e2272c5d4c20c dev: false - /tailwindcss/3.0.23_c940fbabf228b85b1c73d314b43e31f1: + /tailwindcss/3.0.23_4b9e11f8e85900587b5e2272c5d4c20c: resolution: { integrity: sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA== @@ -5322,7 +5322,7 @@ packages: autoprefixer: ^10.0.2 dependencies: arg: 5.0.1 - autoprefixer: 10.4.2_postcss@8.4.6 + autoprefixer: 10.4.2_postcss@8.4.7 chalk: 4.1.2 chokidar: 3.5.3 color-name: 1.1.4 @@ -5335,10 +5335,10 @@ packages: is-glob: 4.0.3 normalize-path: 3.0.0 object-hash: 2.2.0 - postcss: 8.4.6 - postcss-js: 4.0.0_postcss@8.4.6 - postcss-load-config: 3.1.0_ts-node@10.5.0 - postcss-nested: 5.0.6_postcss@8.4.6 + postcss: 8.4.7 + postcss-js: 4.0.0_postcss@8.4.7 + postcss-load-config: 3.1.0_ts-node@10.6.0 + postcss-nested: 5.0.6_postcss@8.4.7 postcss-selector-parser: 6.0.9 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 @@ -5430,10 +5430,10 @@ packages: engines: { node: '>=0.10.0' } dev: true - /ts-node/10.5.0_e04e69b201f218c8d0d59acefc9ea8a6: + /ts-node/10.6.0_e79e62fe450383fd2d418267dc75e645: resolution: { - integrity: sha512-6kEJKwVxAJ35W4akuiysfKwKmjkbYxwQMTBaAxo9KKAx/Yd26mPUyhGz3ji+EsJoAgrLqVsYHNuuYwQe22lbtw== + integrity: sha512-CJen6+dfOXolxudBQXnVjRVvYTmTWbyz7cn+xq2XTsvnaXbHqr4gXSCNbS2Jj8yTZMuGwUoBESLaOkLascVVvg== } hasBin: true peerDependencies: @@ -5452,14 +5452,14 @@ packages: '@tsconfig/node12': 1.0.9 '@tsconfig/node14': 1.0.1 '@tsconfig/node16': 1.0.2 - '@types/node': 17.0.20 + '@types/node': 17.0.21 acorn: 8.5.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.5.5 + typescript: 4.6.2 v8-compile-cache-lib: 3.0.0 yn: 3.1.1 dev: true @@ -5477,7 +5477,7 @@ packages: } dev: true - /tsutils/3.21.0_typescript@4.5.5: + /tsutils/3.21.0_typescript@4.6.2: resolution: { integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== @@ -5487,7 +5487,7 @@ packages: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.5.5 + typescript: 4.6.2 dev: true /tweetnacl/0.14.5: @@ -5520,10 +5520,10 @@ packages: engines: { node: '>=10' } dev: true - /typescript/4.5.5: + /typescript/4.6.2: resolution: { - integrity: sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== + integrity: sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg== } engines: { node: '>=4.2.0' } hasBin: true @@ -5600,7 +5600,7 @@ packages: optional: true dependencies: esbuild: 0.14.21 - postcss: 8.4.6 + postcss: 8.4.7 resolve: 1.22.0 rollup: 2.61.1 optionalDependencies: diff --git a/src/lib/components/CopyPasswordField.svelte b/src/lib/components/CopyPasswordField.svelte index da57e884c..88199f6ab 100644 --- a/src/lib/components/CopyPasswordField.svelte +++ b/src/lib/components/CopyPasswordField.svelte @@ -75,7 +75,7 @@ /> {/if} -
+
{#if isPasswordField}
(showPassword = !showPassword)}> From 3d27fd04ba309f69182750b7d25f133c0cb374a9 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 2 Mar 2022 14:53:43 +0100 Subject: [PATCH 05/15] cleanup old images of coolify --- src/lib/queues/cleanup.ts | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/lib/queues/cleanup.ts b/src/lib/queues/cleanup.ts index 53c1896a7..5a338c63f 100644 --- a/src/lib/queues/cleanup.ts +++ b/src/lib/queues/cleanup.ts @@ -1,12 +1,28 @@ import { dev } from '$app/env'; -import { asyncExecShell, getEngine } from '$lib/common'; +import { asyncExecShell, getEngine, version } from '$lib/common'; import { prisma } from '$lib/database'; import { defaultProxyImageHttp, defaultProxyImageTcp } from '$lib/haproxy'; - export default async function () { const destinationDockers = await prisma.destinationDocker.findMany(); for (const destinationDocker of destinationDockers) { const host = getEngine(destinationDocker.engine); + try { + await asyncExecShell( + `DOCKER_HOST=${host} docker rmi $(docker images coollabsio/coolify --filter before="coollabsio/coolify:latest" -q)` + ); + } catch (error) { + console.log(error); + } + try { + await asyncExecShell(`DOCKER_HOST=${host} docker container prune -f`); + } catch (error) { + console.log(error); + } + try { + await asyncExecShell(`DOCKER_HOST=${host} docker image prune -f`); + } catch (error) { + console.log(error); + } // Tagging images with labels // try { // const images = [ @@ -30,16 +46,6 @@ export default async function () { // } // } // } catch (error) {} - try { - await asyncExecShell(`DOCKER_HOST=${host} docker container prune -f`); - } catch (error) { - console.log(error); - } - try { - await asyncExecShell(`DOCKER_HOST=${host} docker image prune -f`); - } catch (error) { - console.log(error); - } // if (!dev) { // // Cleanup images that are not managed by coolify // try { From ebde77008c0fda6de60127f175b6a1a1c2456301 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 2 Mar 2022 15:52:06 +0100 Subject: [PATCH 06/15] Cleanup coolify image fix --- src/lib/queues/cleanup.ts | 8 ++++++-- src/lib/queues/index.ts | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/lib/queues/cleanup.ts b/src/lib/queues/cleanup.ts index 5a338c63f..31d4507be 100644 --- a/src/lib/queues/cleanup.ts +++ b/src/lib/queues/cleanup.ts @@ -6,10 +6,14 @@ export default async function () { const destinationDockers = await prisma.destinationDocker.findMany(); for (const destinationDocker of destinationDockers) { const host = getEngine(destinationDocker.engine); + // Cleanup old coolify images try { - await asyncExecShell( - `DOCKER_HOST=${host} docker rmi $(docker images coollabsio/coolify --filter before="coollabsio/coolify:latest" -q)` + const { stdout: images } = await asyncExecShell( + `DOCKER_HOST=${host} docker images coollabsio/coolify --filter before="coollabsio/coolify:latest" -q` ); + if (images) { + await asyncExecShell(`DOCKER_HOST=${host} docker rmi ${images}`); + } } catch (error) { console.log(error); } diff --git a/src/lib/queues/index.ts b/src/lib/queues/index.ts index 1ce9411c4..f002547e8 100644 --- a/src/lib/queues/index.ts +++ b/src/lib/queues/index.ts @@ -87,7 +87,7 @@ const cron = async () => { await queue.proxy.add('proxy', {}, { repeat: { every: 10000 } }); await queue.ssl.add('ssl', {}, { repeat: { every: 60000 } }); - await queue.cleanup.add('cleanup', {}, { repeat: { every: 600000 } }); + await queue.cleanup.add('cleanup', {}, { repeat: { every: 300000 } }); await queue.sslRenew.add('sslRenew', {}, { repeat: { every: 1800000 } }); const events = { From 3d2a34737b4fc145a9dcdfcbea0bb932abc58c59 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 2 Mar 2022 15:52:22 +0100 Subject: [PATCH 07/15] prevent restarting container check --- src/lib/haproxy/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/haproxy/index.ts b/src/lib/haproxy/index.ts index deedd0bf2..5d17fb573 100644 --- a/src/lib/haproxy/index.ts +++ b/src/lib/haproxy/index.ts @@ -178,7 +178,7 @@ export async function checkContainer(engine, container) { const parsedStdout = JSON.parse(stdout); const status = parsedStdout.Status; - const isRunning = parsedStdout.Running; + const isRunning = parsedStdout.Running && parsedStdout.Restart; if (status === 'exited' || status === 'created') { await asyncExecShell(`DOCKER_HOST="${host}" docker rm ${container}`); From 53e1f22eb15a8d219f54eb5ef163c88a8dcbdcdf Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 2 Mar 2022 20:32:18 +0100 Subject: [PATCH 08/15] fix: check when a container is running --- src/lib/haproxy/index.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/lib/haproxy/index.ts b/src/lib/haproxy/index.ts index 5d17fb573..b41f9035e 100644 --- a/src/lib/haproxy/index.ts +++ b/src/lib/haproxy/index.ts @@ -175,11 +175,9 @@ export async function checkContainer(engine, container) { const { stdout } = await asyncExecShell( `DOCKER_HOST="${host}" docker inspect --format '{{json .State}}' ${container}` ); - const parsedStdout = JSON.parse(stdout); const status = parsedStdout.Status; - const isRunning = parsedStdout.Running && parsedStdout.Restart; - + const isRunning = status === 'running' ? true : false; if (status === 'exited' || status === 'created') { await asyncExecShell(`DOCKER_HOST="${host}" docker rm ${container}`); } From ddc4d36688fdf0bcc8ae4abd2b4c0722cfee183a Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 2 Mar 2022 20:32:29 +0100 Subject: [PATCH 09/15] Fix cleanup process of old coolify images --- src/lib/queues/cleanup.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/queues/cleanup.ts b/src/lib/queues/cleanup.ts index 31d4507be..42c2cec28 100644 --- a/src/lib/queues/cleanup.ts +++ b/src/lib/queues/cleanup.ts @@ -9,7 +9,7 @@ export default async function () { // Cleanup old coolify images try { const { stdout: images } = await asyncExecShell( - `DOCKER_HOST=${host} docker images coollabsio/coolify --filter before="coollabsio/coolify:latest" -q` + `DOCKER_HOST=${host} docker images coollabsio/coolify --filter before="coollabsio/coolify:latest" -q | xargs ` ); if (images) { await asyncExecShell(`DOCKER_HOST=${host} docker rmi ${images}`); From 0926d40247c00a9b1318a9a6c92b3dbba0a3d492 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 2 Mar 2022 20:43:16 +0100 Subject: [PATCH 10/15] fix: Reload haproxy if new cert is added --- src/lib/letsencrypt/index.ts | 21 +++++++++++++++++++++ src/lib/queues/index.ts | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/lib/letsencrypt/index.ts b/src/lib/letsencrypt/index.ts index 456c5bc6d..61a8c0c37 100644 --- a/src/lib/letsencrypt/index.ts +++ b/src/lib/letsencrypt/index.ts @@ -48,6 +48,17 @@ export async function letsEncrypt(domain, id = null, isCoolify = false) { } } if (dualCerts) { + let found = false; + try { + await asyncExecShell( + `DOCKER_HOST=${host} docker run --rm -v "coolify-letsencrypt:/etc/letsencrypt" -v "coolify-ssl-certs:/app/ssl" alpine:latest sh -c "ls -1 /app/ssl/${wwwDomain}.pem"` + ); + found = true; + } catch (error) { + // + } + if (found) return; + await asyncExecShell( `DOCKER_HOST=${host} docker run --rm --name certbot-${randomCuid} -p 9080:${randomPort} -v "coolify-letsencrypt:/etc/letsencrypt" certbot/certbot --logs-dir /etc/letsencrypt/logs certonly --standalone --preferred-challenges http --http-01-address 0.0.0.0 --http-01-port ${randomPort} -d ${nakedDomain} -d ${wwwDomain} --expand --agree-tos --non-interactive --register-unsafely-without-email ${ dev ? '--test-cert' : '' @@ -58,6 +69,16 @@ export async function letsEncrypt(domain, id = null, isCoolify = false) { ); await reloadHaproxy(host); } else { + let found = false; + try { + await asyncExecShell( + `DOCKER_HOST=${host} docker run --rm -v "coolify-letsencrypt:/etc/letsencrypt" -v "coolify-ssl-certs:/app/ssl" alpine:latest sh -c "ls -1 /app/ssl/${domain}.pem"` + ); + found = true; + } catch (error) { + // + } + if (found) return; await asyncExecShell( `DOCKER_HOST=${host} docker run --rm --name certbot-${randomCuid} -p 9080:${randomPort} -v "coolify-letsencrypt:/etc/letsencrypt" certbot/certbot --logs-dir /etc/letsencrypt/logs certonly --standalone --preferred-challenges http --http-01-address 0.0.0.0 --http-01-port ${randomPort} -d ${domain} --expand --agree-tos --non-interactive --register-unsafely-without-email ${ dev ? '--test-cert' : '' diff --git a/src/lib/queues/index.ts b/src/lib/queues/index.ts index f002547e8..f2ea96347 100644 --- a/src/lib/queues/index.ts +++ b/src/lib/queues/index.ts @@ -86,7 +86,7 @@ const cron = async () => { ); await queue.proxy.add('proxy', {}, { repeat: { every: 10000 } }); - await queue.ssl.add('ssl', {}, { repeat: { every: 60000 } }); + await queue.ssl.add('ssl', {}, { repeat: { every: dev ? 10000 : 60000 } }); await queue.cleanup.add('cleanup', {}, { repeat: { every: 300000 } }); await queue.sslRenew.add('sslRenew', {}, { repeat: { every: 1800000 } }); From 6655fb182cc734db57d3219ceaee1639de8da368 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 2 Mar 2022 20:57:28 +0100 Subject: [PATCH 11/15] fix: cleanup coolify images --- src/lib/queues/cleanup.ts | 3 ++- src/lib/queues/index.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/queues/cleanup.ts b/src/lib/queues/cleanup.ts index 42c2cec28..8e5056cad 100644 --- a/src/lib/queues/cleanup.ts +++ b/src/lib/queues/cleanup.ts @@ -8,9 +8,10 @@ export default async function () { const host = getEngine(destinationDocker.engine); // Cleanup old coolify images try { - const { stdout: images } = await asyncExecShell( + let { stdout: images } = await asyncExecShell( `DOCKER_HOST=${host} docker images coollabsio/coolify --filter before="coollabsio/coolify:latest" -q | xargs ` ); + images = images.trim(); if (images) { await asyncExecShell(`DOCKER_HOST=${host} docker rmi ${images}`); } diff --git a/src/lib/queues/index.ts b/src/lib/queues/index.ts index f2ea96347..9b93c6c0c 100644 --- a/src/lib/queues/index.ts +++ b/src/lib/queues/index.ts @@ -87,7 +87,7 @@ const cron = async () => { await queue.proxy.add('proxy', {}, { repeat: { every: 10000 } }); await queue.ssl.add('ssl', {}, { repeat: { every: dev ? 10000 : 60000 } }); - await queue.cleanup.add('cleanup', {}, { repeat: { every: 300000 } }); + await queue.cleanup.add('cleanup', {}, { repeat: { every: dev ? 10000 : 300000 } }); await queue.sslRenew.add('sslRenew', {}, { repeat: { every: 1800000 } }); const events = { From 8b8b45778d99039e8ce056ebce8c37f995dcae1b Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 2 Mar 2022 21:01:25 +0100 Subject: [PATCH 12/15] fix: application state in UI --- src/routes/applications/[id]/__layout.svelte | 4 ++-- src/routes/applications/[id]/logs/build/index.svelte | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/routes/applications/[id]/__layout.svelte b/src/routes/applications/[id]/__layout.svelte index 3a04337e4..2c979a4ab 100644 --- a/src/routes/applications/[id]/__layout.svelte +++ b/src/routes/applications/[id]/__layout.svelte @@ -86,7 +86,7 @@ async function handleDeploySubmit() { try { const { buildId } = await post(`/applications/${id}/deploy.json`, { ...application }); - return window.location.assign(`/applications/${id}/logs/build?buildId=${buildId}`); + return await goto(`/applications/${id}/logs/build?buildId=${buildId}`); } catch ({ error }) { return errorNotification(error); } @@ -108,7 +108,7 @@ try { loading = true; await post(`/applications/${id}/stop.json`, {}); - return window.location.reload(); + isRunning = false; } catch ({ error }) { return errorNotification(error); } finally { diff --git a/src/routes/applications/[id]/logs/build/index.svelte b/src/routes/applications/[id]/logs/build/index.svelte index f88985265..d81159d9d 100644 --- a/src/routes/applications/[id]/logs/build/index.svelte +++ b/src/routes/applications/[id]/logs/build/index.svelte @@ -51,9 +51,10 @@ build.took = data.builds[0].took; build.since = data.builds[0].since; } + return build; }); - return; + return window.location.reload(); } catch ({ error }) { return errorNotification(error); } From 892d8cd5c1fe529fa8af02dddb42f748016dd28a Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 2 Mar 2022 21:04:42 +0100 Subject: [PATCH 13/15] Reload proxy after ssl renewal --- src/lib/queues/sslrenewal.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/queues/sslrenewal.ts b/src/lib/queues/sslrenewal.ts index e16b4e3a1..807aa34c5 100644 --- a/src/lib/queues/sslrenewal.ts +++ b/src/lib/queues/sslrenewal.ts @@ -1,10 +1,12 @@ import { asyncExecShell } from '$lib/common'; +import { reloadHaproxy } from '$lib/haproxy'; export default async function () { try { - return await asyncExecShell( + await asyncExecShell( `docker run --rm --name certbot-renewal -v "coolify-letsencrypt:/etc/letsencrypt" certbot/certbot --logs-dir /etc/letsencrypt/logs renew` ); + await reloadHaproxy('unix:///var/run/docker.sock'); } catch (error) { throw error; } From ab9f8ff3569d4843424ff5af24fa689a6181eeb0 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 2 Mar 2022 21:08:36 +0100 Subject: [PATCH 14/15] Before latest image --- src/lib/queues/cleanup.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/queues/cleanup.ts b/src/lib/queues/cleanup.ts index 8e5056cad..ddfdf08c1 100644 --- a/src/lib/queues/cleanup.ts +++ b/src/lib/queues/cleanup.ts @@ -9,7 +9,7 @@ export default async function () { // Cleanup old coolify images try { let { stdout: images } = await asyncExecShell( - `DOCKER_HOST=${host} docker images coollabsio/coolify --filter before="coollabsio/coolify:latest" -q | xargs ` + `DOCKER_HOST=${host} docker images coollabsio/coolify --filter before="coollabsio/coolify:${version}" -q | xargs ` ); images = images.trim(); if (images) { From 7c3314abae7adb7f3bb8b546e43dd8176c1b5fad Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 2 Mar 2022 21:14:53 +0100 Subject: [PATCH 15/15] force image deletion --- src/lib/queues/cleanup.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/queues/cleanup.ts b/src/lib/queues/cleanup.ts index ddfdf08c1..4065099de 100644 --- a/src/lib/queues/cleanup.ts +++ b/src/lib/queues/cleanup.ts @@ -13,7 +13,7 @@ export default async function () { ); images = images.trim(); if (images) { - await asyncExecShell(`DOCKER_HOST=${host} docker rmi ${images}`); + await asyncExecShell(`DOCKER_HOST=${host} docker rmi -f ${images}`); } } catch (error) { console.log(error);