From 2ff9c5fed594a5cf57f8e14f9ec0fbd183ec60ff Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 18 Jun 2021 21:16:05 +0200 Subject: [PATCH] v1.0.20 (#65) --- README.md | 2 + package.json | 5 +- pnpm-lock.yaml | 185 ++++++++------- .../Application/ActiveTab/General.svelte | 2 +- src/routes/__layout.svelte | 28 ++- src/routes/api/v1/servers/cleanups/caches.ts | 25 ++ .../api/v1/servers/cleanups/containers.ts | 25 ++ src/routes/api/v1/servers/cleanups/images.ts | 25 ++ src/routes/api/v1/servers/cleanups/volumes.ts | 25 ++ src/routes/api/v1/servers/index.ts | 34 +++ .../api/v1/services/deploy/wordpress/index.ts | 173 ++++++++++++++ src/routes/dashboard/services.svelte | 47 +++- src/routes/servers/index.svelte | 101 +++++++++ .../service/[name]/configuration.svelte | 14 ++ src/routes/service/new/[type]/index.svelte | 214 +++++++++++++++++- src/routes/service/new/index.svelte | 27 ++- src/routes/settings.svelte | 4 +- src/store/index.ts | 12 + 18 files changed, 849 insertions(+), 99 deletions(-) create mode 100644 src/routes/api/v1/servers/cleanups/caches.ts create mode 100644 src/routes/api/v1/servers/cleanups/containers.ts create mode 100644 src/routes/api/v1/servers/cleanups/images.ts create mode 100644 src/routes/api/v1/servers/cleanups/volumes.ts create mode 100644 src/routes/api/v1/servers/index.ts create mode 100644 src/routes/api/v1/services/deploy/wordpress/index.ts create mode 100644 src/routes/servers/index.svelte diff --git a/README.md b/README.md index 180eb1f65..c730f32d3 100644 --- a/README.md +++ b/README.md @@ -48,11 +48,13 @@ With Github integration ### Services +- [WordPress](https://wordpress.org) - [Plausible Analytics](https://plausible.io) - [NocoDB](https://nocodb.com) - [VSCode Server](https://github.com/cdr/code-server) - [MinIO](https://min.io) + ## Support - Twitter: [@andrasbacsai](https://twitter.com/andrasbacsai) diff --git a/package.json b/package.json index 57d2ddd75..cc173adc5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "coolify", "description": "An open-source, hassle-free, self-hostable Heroku & Netlify alternative.", - "version": "1.0.19", + "version": "1.0.20", "license": "AGPL-3.0", "scripts": { "dev:docker:start": "docker-compose -f docker-compose-dev.yml up -d", @@ -37,7 +37,6 @@ }, "type": "module", "dependencies": { - "dotenv-extended": "^2.9.0", "@iarna/toml": "^2.2.5", "@zerodevx/svelte-toast": "^0.3.0", "commander": "^7.2.0", @@ -46,6 +45,7 @@ "cuid": "^2.1.8", "dayjs": "^1.10.5", "dockerode": "^3.3.0", + "dotenv-extended": "^2.9.0", "generate-password": "^1.6.0", "js-yaml": "^4.1.0", "jsonwebtoken": "^8.5.1", @@ -53,6 +53,7 @@ "shelljs": "^0.8.4", "svelte-kit-cookie-session": "^1.0.6", "svelte-select": "^3.17.0", + "systeminformation": "^5.7.7", "unique-names-generator": "^4.5.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fec8e53a4..649c094f8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,7 +33,8 @@ specifiers: svelte-kit-cookie-session: ^1.0.6 svelte-preprocess: ^4.7.3 svelte-select: ^3.17.0 - tailwindcss: 2.2.0-canary.8 + systeminformation: ^5.7.7 + tailwindcss: 2.2.0 tslib: ^2.2.0 typescript: ^4.3.2 unique-names-generator: ^4.5.0 @@ -56,6 +57,7 @@ dependencies: shelljs: 0.8.4 svelte-kit-cookie-session: 1.0.6 svelte-select: 3.17.0 + systeminformation: 5.7.7 unique-names-generator: 4.5.0 devDependencies: @@ -75,7 +77,7 @@ devDependencies: prettier-plugin-svelte: 2.3.0_prettier@2.3.1+svelte@3.38.2 svelte: 3.38.2 svelte-preprocess: 4.7.3_ddfd8490a44ef0de606159ff3aef985a - tailwindcss: 2.2.0-canary.8_6daa0ece57b4377652e73c9c66c3b94c + tailwindcss: 2.2.0_6daa0ece57b4377652e73c9c66c3b94c tslib: 2.2.0 typescript: 4.3.2 vite: 2.3.6 @@ -88,10 +90,22 @@ packages: '@babel/highlight': 7.14.0 dev: true + /@babel/code-frame/7.14.5: + resolution: {integrity: sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.14.5 + dev: true + /@babel/helper-validator-identifier/7.14.0: resolution: {integrity: sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==} dev: true + /@babel/helper-validator-identifier/7.14.5: + resolution: {integrity: sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/highlight/7.14.0: resolution: {integrity: sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==} dependencies: @@ -100,6 +114,15 @@ packages: js-tokens: 4.0.0 dev: true + /@babel/highlight/7.14.5: + resolution: {integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.14.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + /@eslint/eslintrc/0.4.2: resolution: {integrity: sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -117,34 +140,37 @@ packages: - supports-color dev: true - /@fullhuman/postcss-purgecss/3.1.3: - resolution: {integrity: sha512-kwOXw8fZ0Lt1QmeOOrd+o4Ibvp4UTEBFQbzvWldjlKv5n+G9sXfIPn1hh63IQIL8K8vbvv1oYMJiIUbuy9bGaA==} + /@fullhuman/postcss-purgecss/4.0.3_postcss@8.3.0: + resolution: {integrity: sha512-/EnQ9UDWGGqHkn1UKAwSgh+gJHPKmD+Z+5dQ4gWT4qq2NUyez3zqAfZNwFH3eSgmgO+wjTXfhlLchx2M9/K+7Q==} + peerDependencies: + postcss: ^8.0.0 dependencies: - purgecss: 3.1.3 + postcss: 8.3.0 + purgecss: 4.0.3 dev: true /@iarna/toml/2.2.5: resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} dev: false - /@nodelib/fs.scandir/2.1.4: - resolution: {integrity: sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==} + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: - '@nodelib/fs.stat': 2.0.4 + '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 dev: true - /@nodelib/fs.stat/2.0.4: - resolution: {integrity: sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==} + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} dev: true - /@nodelib/fs.walk/1.2.6: - resolution: {integrity: sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==} + /@nodelib/fs.walk/1.2.7: + resolution: {integrity: sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==} engines: {node: '>= 8'} dependencies: - '@nodelib/fs.scandir': 2.1.4 + '@nodelib/fs.scandir': 2.1.5 fastq: 1.11.0 dev: true @@ -433,7 +459,11 @@ packages: engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 - picomatch: 2.2.3 + picomatch: 2.3.0 + dev: true + + /arg/5.0.0: + resolution: {integrity: sha512-4P8Zm2H+BRS+c/xX1LrHw0qKpEhdlZjLCgWy+d78T9vqa2Z2SiD2wMrYuWIAFy5IZUD7nnNXroRttz+0RzlrzQ==} dev: true /argparse/1.0.10: @@ -621,8 +651,8 @@ packages: engines: {node: '>=8'} dev: true - /chokidar/3.5.1: - resolution: {integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==} + /chokidar/3.5.2: + resolution: {integrity: sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==} engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.2 @@ -631,7 +661,7 @@ packages: is-binary-path: 2.1.0 is-glob: 4.0.1 normalize-path: 3.0.0 - readdirp: 3.5.0 + readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 dev: true @@ -1213,12 +1243,12 @@ packages: resolution: {integrity: sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==} engines: {node: '>=8'} dependencies: - '@nodelib/fs.stat': 2.0.4 - '@nodelib/fs.walk': 1.2.6 + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.7 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.4 - picomatch: 2.2.3 + picomatch: 2.3.0 dev: true /fast-json-stable-stringify/2.1.0: @@ -1305,20 +1335,6 @@ packages: resolution: {integrity: sha512-YUJTQkApkLT/fru0QdYWP0lVZdPKhF5kXCP24sgI4gR/vFMJFopCj5t1+9FAKIYcML/nxzx2PMkA1ymO1FC+tQ==} dev: false - /glob-base/0.3.0: - resolution: {integrity: sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=} - engines: {node: '>=0.10.0'} - dependencies: - glob-parent: 2.0.0 - is-glob: 2.0.1 - dev: true - - /glob-parent/2.0.0: - resolution: {integrity: sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=} - dependencies: - is-glob: 2.0.1 - dev: true - /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1326,6 +1342,13 @@ packages: is-glob: 4.0.1 dev: true + /glob-parent/6.0.0: + resolution: {integrity: sha512-Hdd4287VEJcZXUwv1l8a+vXC1GjOQqXe+VS30w/ypihpcnu9M1n3xeYeJu5CBpeEQj2nAab2xxz28GuA3vp4Ww==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.1 + dev: true + /glob/7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: @@ -1502,16 +1525,6 @@ packages: dependencies: has: 1.0.3 - /is-dotfile/1.0.3: - resolution: {integrity: sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=} - engines: {node: '>=0.10.0'} - dev: true - - /is-extglob/1.0.0: - resolution: {integrity: sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=} - engines: {node: '>=0.10.0'} - dev: true - /is-extglob/2.1.1: resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} engines: {node: '>=0.10.0'} @@ -1522,13 +1535,6 @@ packages: engines: {node: '>=8'} dev: true - /is-glob/2.0.1: - resolution: {integrity: sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 1.0.0 - dev: true - /is-glob/4.0.1: resolution: {integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==} engines: {node: '>=0.10.0'} @@ -1732,7 +1738,7 @@ packages: engines: {node: '>=8.6'} dependencies: braces: 3.0.2 - picomatch: 2.2.3 + picomatch: 2.3.0 dev: true /min-indent/1.0.1: @@ -1935,21 +1941,11 @@ packages: callsites: 3.1.0 dev: true - /parse-glob/3.0.4: - resolution: {integrity: sha1-ssN2z7EfNVE7rdFz7wu246OIORw=} - engines: {node: '>=0.10.0'} - dependencies: - glob-base: 0.3.0 - is-dotfile: 1.0.3 - is-extglob: 1.0.0 - is-glob: 2.0.1 - dev: true - /parse-json/5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.12.11 + '@babel/code-frame': 7.14.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.1.6 @@ -1963,8 +1959,8 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - /path-parse/1.0.6: - resolution: {integrity: sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==} + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -1976,6 +1972,11 @@ packages: engines: {node: '>=8.6'} dev: true + /picomatch/2.3.0: + resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} + engines: {node: '>=8.6'} + dev: true + /postcss-calc/8.0.0_postcss@8.3.0: resolution: {integrity: sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==} peerDependencies: @@ -2050,7 +2051,7 @@ packages: engines: {node: '>=10.0'} dependencies: camelcase-css: 2.0.1 - postcss: 8.3.0 + postcss: 8.3.5 dev: true /postcss-load-config/3.0.1: @@ -2320,6 +2321,15 @@ packages: source-map-js: 0.6.2 dev: true + /postcss/8.3.5: + resolution: {integrity: sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + colorette: 1.2.2 + nanoid: 3.1.23 + source-map-js: 0.6.2 + dev: true + /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2367,13 +2377,13 @@ packages: engines: {node: '>=6'} dev: true - /purgecss/3.1.3: - resolution: {integrity: sha512-hRSLN9mguJ2lzlIQtW4qmPS2kh6oMnA9RxdIYK8sz18QYqd6ePp4GNDl18oWHA1f2v2NEQIh51CO8s/E3YGckQ==} + /purgecss/4.0.3: + resolution: {integrity: sha512-PYOIn5ibRIP34PBU9zohUcCI09c7drPJJtTDAc0Q6QlRz2/CHQ8ywGLdE7ZhxU2VTqB7p5wkvj5Qcm05Rz3Jmw==} hasBin: true dependencies: commander: 6.2.1 glob: 7.1.7 - postcss: 8.3.0 + postcss: 8.3.5 postcss-selector-parser: 6.0.6 dev: true @@ -2407,11 +2417,11 @@ packages: util-deprecate: 1.0.2 dev: false - /readdirp/3.5.0: - resolution: {integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==} + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: - picomatch: 2.2.3 + picomatch: 2.3.0 dev: true /rechoir/0.6.2: @@ -2460,7 +2470,7 @@ packages: resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} dependencies: is-core-module: 2.4.0 - path-parse: 1.0.6 + path-parse: 1.0.7 /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -2792,6 +2802,13 @@ packages: stable: 0.1.8 dev: true + /systeminformation/5.7.7: + resolution: {integrity: sha512-aQ7MBeVI2MKPYOi3YJAoZ45JVlRkBA7IXoqGgtVBamvtE0I6JLOyJzD/VVc9pnMXDb3yqaMwssAjhwtJax4/Rw==} + engines: {node: '>=4.0.0'} + os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos] + hasBin: true + dev: false + /table/6.6.0: resolution: {integrity: sha512-iZMtp5tUvcnAdtHpZTWLPF0M7AgiQsURR2DwmxnJwSy8I3+cY+ozzVvYha3BOLG2TB+L0CqjIz+91htuj6yCXg==} engines: {node: '>=10.0.0'} @@ -2805,35 +2822,39 @@ packages: strip-ansi: 6.0.0 dev: true - /tailwindcss/2.2.0-canary.8_6daa0ece57b4377652e73c9c66c3b94c: - resolution: {integrity: sha512-IVgtzCS3HTq4lsK793isUIhbylCoG/WrarYpK8cAlbjOt5TwLJnhfp2GKjfzK3201eM4YawTjuRI+wesEy8XGg==} + /tailwindcss/2.2.0_6daa0ece57b4377652e73c9c66c3b94c: + resolution: {integrity: sha512-vzyictuac60cUfky6R4gFW98glcc/UxpaCH+Mt9dq+LEPdZq2Dpvo5iYpPaemutOIjfeiY0Y8j0ZgJG3wBaFDQ==} engines: {node: '>=12.13.0'} hasBin: true peerDependencies: autoprefixer: ^10.0.2 postcss: ^8.0.9 dependencies: - '@fullhuman/postcss-purgecss': 3.1.3 + '@fullhuman/postcss-purgecss': 4.0.3_postcss@8.3.0 + arg: 5.0.0 autoprefixer: 10.2.6_postcss@8.3.0 bytes: 3.1.0 chalk: 4.1.1 - chokidar: 3.5.1 + chokidar: 3.5.2 color: 3.1.3 + cosmiconfig: 7.0.0 detective: 5.2.0 didyoumean: 1.2.1 dlv: 1.1.3 fast-glob: 3.2.5 fs-extra: 10.0.0 + glob-parent: 6.0.0 html-tags: 3.1.0 + is-glob: 4.0.1 lodash: 4.17.21 lodash.topath: 4.5.2 modern-normalize: 1.1.0 node-emoji: 1.10.0 normalize-path: 3.0.0 object-hash: 2.2.0 - parse-glob: 3.0.4 postcss: 8.3.0 postcss-js: 3.0.3 + postcss-load-config: 3.0.1 postcss-nested: 5.0.5_postcss@8.3.0 postcss-selector-parser: 6.0.6 postcss-value-parser: 4.1.0 @@ -2841,6 +2862,7 @@ packages: quick-lru: 5.1.1 reduce-css-calc: 2.1.8 resolve: 1.20.0 + tmp: 0.2.1 dev: true /tar-fs/2.0.1: @@ -2871,6 +2893,13 @@ packages: resolution: {integrity: sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=} dev: true + /tmp/0.2.1: + resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} + engines: {node: '>=8.17.0'} + dependencies: + rimraf: 3.0.2 + dev: true + /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} diff --git a/src/components/Application/ActiveTab/General.svelte b/src/components/Application/ActiveTab/General.svelte index d99c3a455..a6424ee2d 100644 --- a/src/components/Application/ActiveTab/General.svelte +++ b/src/components/Application/ActiveTab/General.svelte @@ -339,7 +339,7 @@ > Use setting diff --git a/src/routes/__layout.svelte b/src/routes/__layout.svelte index 137875fbb..4bd250eae 100644 --- a/src/routes/__layout.svelte +++ b/src/routes/__layout.svelte @@ -53,12 +53,13 @@ let upgradeDisabled = false; let upgradeDone = false; let showAck = false; + let globalFeatureFlag = browser && localStorage.getItem('globalFeatureFlag') const options = { duration: 2000 }; onMount(async () => { upgradeAvailable = await checkUpgrade(); - browser && localStorage.removeItem('token') + browser && localStorage.removeItem('token'); if (!localStorage.getItem('automaticErrorReportsAck')) { showAck = true; if (latest?.coolify[branch]?.settings?.sendErrors) { @@ -224,6 +225,31 @@
+ {#if globalFeatureFlag} + +
goto('/servers')} + class:text-red-500={$page.path === '/servers' || $page.path.startsWith('/servers')} + class:bg-warmGray-700={$page.path === '/servers' || $page.path.startsWith('/servers')} + > + + + +
+
+ {/if}
diff --git a/src/routes/servers/index.svelte b/src/routes/servers/index.svelte new file mode 100644 index 000000000..ce68b4a9b --- /dev/null +++ b/src/routes/servers/index.svelte @@ -0,0 +1,101 @@ + + + + +
+
+
Servers
+
+
+ +
+
+
{hostname}
+
Filesystem Usage
+ {#each filesystems as filesystem} + +
+ {filesystem.mount}: {(filesystem.available / 1024 / 1024).toFixed()}MB ({filesystem.use}%) free of {(filesystem.size /1024 /1024).toFixed()}MB +
+ {/each} +
Docker Reclaimable
+ {#each dockerReclaimable as reclaimable} +
+ {reclaimable.Type}: {reclaimable.Reclaimable} of {reclaimable.Size} +
+ {/each} + + + + + +
+
diff --git a/src/routes/service/[name]/configuration.svelte b/src/routes/service/[name]/configuration.svelte index e2ea07399..44a8c9ffa 100644 --- a/src/routes/service/[name]/configuration.svelte +++ b/src/routes/service/[name]/configuration.svelte @@ -13,6 +13,7 @@ let service = {}; async function loadServiceConfig() { if ($page.params.name) { + try { service = await request(`/api/v1/services/${$page.params.name}`, $session); } catch (error) { @@ -39,6 +40,8 @@
VSCode Server
{:else if $page.params.name === 'minio'}
MinIO
+ {:else if $page.params.name.match(/wp-/)} +
Wordpress({service.config.baseURL.replace('https://','')})
{/if}
@@ -76,6 +79,15 @@ class="w-7 mx-auto" src="https://cdn.coollabs.io/assets/coolify/services/minio/MINIO_Bird.png" /> + {:else if $page.params.name.match(/wp-/)} + + + {/if}
@@ -106,6 +118,8 @@ {:else if $page.params.name === 'minio'} + {:else if $page.params.name.match(/wp-/)} +
Nothing to show here. Enjoy using WordPress!
{/if} diff --git a/src/routes/service/new/[type]/index.svelte b/src/routes/service/new/[type]/index.svelte index 4fde76802..93ae461b6 100644 --- a/src/routes/service/new/[type]/index.svelte +++ b/src/routes/service/new/[type]/index.svelte @@ -2,7 +2,7 @@ import { fade } from 'svelte/transition'; import { toast } from '@zerodevx/svelte-toast'; - import { newService } from '$store'; + import { newService, newWordpressService } from '$store'; import { page, session } from '$app/stores'; import { request } from '$lib/request'; import { goto } from '$app/navigation'; @@ -25,7 +25,7 @@ $: deployableNocoDB = $newService.baseURL === '' || $newService.baseURL === null; $: deployableCodeServer = $newService.baseURL === '' || $newService.baseURL === null; $: deployableMinIO = $newService.baseURL === '' || $newService.baseURL === null; - + $: deployableWordpress = false let loading = false; async function deployPlausible() { try { @@ -115,6 +115,28 @@ loading = false; } } + async function deployWordpress() { + try { + loading = true; + await request(`/api/v1/services/deploy/${$page.params.type}`, $session, { + body: { + ...$newWordpressService + } + }); + if (browser) { + toast.push( + 'Service deployment queued.


It could take 2-5 minutes to be ready, be patient and grab a coffee/tea!', + { duration: 4000 } + ); + goto(`/dashboard/services`, { replaceState: true }); + } + } catch (error) { + console.log(error); + browser && toast.push('Oops something went wrong. See console.log.'); + } finally { + loading = false; + } + } @@ -129,13 +151,15 @@ VSCode Server {:else if $page.params.type === 'minio'} MinIO + {:else if $page.params.type === 'wordpress'} + Wordpress {/if} {#if loading} {:else if $page.params.type === 'plausible'} -
+
+{:else if $page.params.type === 'wordpress'} +
+
+ + +
+
+
+
    +
  • +
    +

    Use remote MySQL database?

    +

    + If not, Coolify will create a local database for you. +

    +
    + +
  • +
+
+ {#if $newWordpressService.remoteDB} +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ {/if} +
+ +