From eebe071a4329f4d824ca4724865b7644cb46ab98 Mon Sep 17 00:00:00 2001 From: Marius Ihring <89946878+mariusihring@users.noreply.github.com> Date: Fri, 3 May 2024 20:16:32 +0200 Subject: [PATCH 01/41] Update build.sh Updating build, so it gets build for arm64 aarch64 and the normal x86, using buildx --- docker/build.sh | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docker/build.sh b/docker/build.sh index 22104934d..5b65a6f5b 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -10,9 +10,16 @@ else TAG="$VERSION" fi -docker build --platform linux/amd64 --pull --rm -f 'Dockerfile' -t "dokploy/dokploy:${TAG}" . +# Ensure Docker's buildx plugin is being used and set as the default builder +BUILDER=$(docker buildx create --use) + +# Build and push the images for different architectures +docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 --pull --rm -t "dokploy/dokploy:${TAG}" -f 'Dockerfile' --push . if [ "$BUILD_TYPE" != "canary" ]; then - # Tag the production build as latest - docker tag "dokploy/dokploy:${TAG}" "dokploy/dokploy:latest" + # Tag the production build as latest for all architectures and push + docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 --pull --rm -t "dokploy/dokploy:latest" -f 'Dockerfile' --push . fi + +# Clean up the buildx builder instance +docker buildx rm $BUILDER From 59bd46908f4cf169f30a17a72f91ed7e9f673895 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 4 May 2024 02:19:35 -0600 Subject: [PATCH 02/41] chore: remove --push flag --- docker/build.sh | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/docker/build.sh b/docker/build.sh index 5b65a6f5b..e0e5b14a9 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -10,16 +10,8 @@ else TAG="$VERSION" fi -# Ensure Docker's buildx plugin is being used and set as the default builder BUILDER=$(docker buildx create --use) -# Build and push the images for different architectures -docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 --pull --rm -t "dokploy/dokploy:${TAG}" -f 'Dockerfile' --push . +docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 --pull --rm -t "dokploy/dokploy:${TAG}" -f 'Dockerfile' . -if [ "$BUILD_TYPE" != "canary" ]; then - # Tag the production build as latest for all architectures and push - docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 --pull --rm -t "dokploy/dokploy:latest" -f 'Dockerfile' --push . -fi - -# Clean up the buildx builder instance docker buildx rm $BUILDER From c8150f4f3201df455246b5fbeeae56806e6e08a0 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 4 May 2024 02:19:48 -0600 Subject: [PATCH 03/41] refactor: add buildx multiplatform and --push --- docker/push.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docker/push.sh b/docker/push.sh index 1e9fbecaf..f8a7055ca 100755 --- a/docker/push.sh +++ b/docker/push.sh @@ -3,13 +3,16 @@ # Determine the type of build based on the first script argument BUILD_TYPE=${1:-production} +BUILDER=$(docker buildx create --use) + if [ "$BUILD_TYPE" == "canary" ]; then TAG="canary" echo PUSHING CANARY - docker push "dokploy/dokploy:${TAG}" + docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 --pull --rm -t "dokploy/dokploy:${TAG}" -f 'Dockerfile' --push . else echo "PUSHING PRODUCTION" VERSION=$(node -p "require('./package.json').version") - docker push "dokploy/dokploy:${VERSION}" - docker push "dokploy/dokploy:latest" + docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 --pull --rm -t "dokploy/dokploy:latest" -t "dokploy/dokploy:${VERSION}" -f 'Dockerfile' --push . fi + +docker buildx rm $BUILDER \ No newline at end of file From c6581f73ffb2c46c1ed7947aacf1bfc490818211 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 4 May 2024 02:20:31 -0600 Subject: [PATCH 04/41] chore: downgrade nextjs to 13.2.4 to support arm/v7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 258f32bf7..101dd3e63 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "lucia": "^3.0.1", "lucide-react": "^0.312.0", "nanoid": "3", - "next": "^14.1.3", + "next": "^13.2.4", "next-themes": "^0.2.1", "node-os-utils": "1.3.7", "node-pty": "1.0.0", From ca54084793a24915fedf0a50955d25fbece6a9ab Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 4 May 2024 02:20:47 -0600 Subject: [PATCH 05/41] chore: remove build script on push --- .github/workflows/pull-request.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 51e36ede7..cd28143d3 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -75,7 +75,5 @@ jobs: - name: Build and push Docker image using custom script run: | - chmod +x ./docker/build.sh chmod +x ./docker/push.sh - ./docker/build.sh ${{ github.ref_name == 'canary' && 'canary' || '' }} ./docker/push.sh ${{ github.ref_name == 'canary' && 'canary' || '' }} \ No newline at end of file From c5f7f8bad60a155019956ebdded41c30d78d2dd8 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 4 May 2024 02:20:59 -0600 Subject: [PATCH 06/41] chore: update dependencies --- next.config.mjs | 5 --- pnpm-lock.yaml | 96 +++++++++++++++++++++++++++---------------------- 2 files changed, 54 insertions(+), 47 deletions(-) diff --git a/next.config.mjs b/next.config.mjs index 95e4a206d..3dc0f83c7 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -6,11 +6,6 @@ /** @type {import("next").NextConfig} */ const nextConfig = { reactStrictMode: true, - logging:{ - fetches:{ - fullUrl:false - } - }, /** * If you are using `appDir` then you must comment the below `i18n` config out. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 21d314ee7..f8fa596c4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -85,7 +85,7 @@ dependencies: version: 10.45.2(@trpc/server@10.45.2) '@trpc/next': specifier: ^10.43.6 - version: 10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/react-query@10.45.2)(@trpc/server@10.45.2)(next@14.1.3)(react-dom@18.2.0)(react@18.2.0) + version: 10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/react-query@10.45.2)(@trpc/server@10.45.2)(next@13.5.6)(react-dom@18.2.0)(react@18.2.0) '@trpc/react-query': specifier: ^10.43.6 version: 10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/server@10.45.2)(react-dom@18.2.0)(react@18.2.0) @@ -156,11 +156,11 @@ dependencies: specifier: '3' version: 3.3.7 next: - specifier: ^14.1.3 - version: 14.1.3(react-dom@18.2.0)(react@18.2.0) + specifier: ^13.2.4 + version: 13.5.6(react-dom@18.2.0)(react@18.2.0) next-themes: specifier: ^0.2.1 - version: 0.2.1(next@14.1.3)(react-dom@18.2.0)(react@18.2.0) + version: 0.2.1(next@13.5.6)(react-dom@18.2.0)(react@18.2.0) node-os-utils: specifier: 1.3.7 version: 1.3.7 @@ -1853,12 +1853,12 @@ packages: dev: false optional: true - /@next/env@14.1.3: - resolution: {integrity: sha512-VhgXTvrgeBRxNPjyfBsDIMvgsKDxjlpw4IAUsHCX8Gjl1vtHUYRT3+xfQ/wwvLPDd/6kqfLqk9Pt4+7gysuCKQ==} + /@next/env@13.5.6: + resolution: {integrity: sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==} dev: false - /@next/swc-darwin-arm64@14.1.3: - resolution: {integrity: sha512-LALu0yIBPRiG9ANrD5ncB3pjpO0Gli9ZLhxdOu6ZUNf3x1r3ea1rd9Q+4xxUkGrUXLqKVK9/lDkpYIJaCJ6AHQ==} + /@next/swc-darwin-arm64@13.5.6: + resolution: {integrity: sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1866,8 +1866,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.1.3: - resolution: {integrity: sha512-E/9WQeXxkqw2dfcn5UcjApFgUq73jqNKaE5bysDm58hEUdUGedVrnRhblhJM7HbCZNhtVl0j+6TXsK0PuzXTCg==} + /@next/swc-darwin-x64@13.5.6: + resolution: {integrity: sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1875,8 +1875,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.1.3: - resolution: {integrity: sha512-USArX9B+3rZSXYLFvgy0NVWQgqh6LHWDmMt38O4lmiJNQcwazeI6xRvSsliDLKt+78KChVacNiwvOMbl6g6BBw==} + /@next/swc-linux-arm64-gnu@13.5.6: + resolution: {integrity: sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1884,8 +1884,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.1.3: - resolution: {integrity: sha512-esk1RkRBLSIEp1qaQXv1+s6ZdYzuVCnDAZySpa62iFTMGTisCyNQmqyCTL9P+cLJ4N9FKCI3ojtSfsyPHJDQNw==} + /@next/swc-linux-arm64-musl@13.5.6: + resolution: {integrity: sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1893,8 +1893,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.1.3: - resolution: {integrity: sha512-8uOgRlYEYiKo0L8YGeS+3TudHVDWDjPVDUcST+z+dUzgBbTEwSSIaSgF/vkcC1T/iwl4QX9iuUyUdQEl0Kxalg==} + /@next/swc-linux-x64-gnu@13.5.6: + resolution: {integrity: sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1902,8 +1902,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.1.3: - resolution: {integrity: sha512-DX2zqz05ziElLoxskgHasaJBREC5Y9TJcbR2LYqu4r7naff25B4iXkfXWfcp69uD75/0URmmoSgT8JclJtrBoQ==} + /@next/swc-linux-x64-musl@13.5.6: + resolution: {integrity: sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1911,8 +1911,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.1.3: - resolution: {integrity: sha512-HjssFsCdsD4GHstXSQxsi2l70F/5FsRTRQp8xNgmQs15SxUfUJRvSI9qKny/jLkY3gLgiCR3+6A7wzzK0DBlfA==} + /@next/swc-win32-arm64-msvc@13.5.6: + resolution: {integrity: sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1920,8 +1920,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.1.3: - resolution: {integrity: sha512-DRuxD5axfDM1/Ue4VahwSxl1O5rn61hX8/sF0HY8y0iCbpqdxw3rB3QasdHn/LJ6Wb2y5DoWzXcz3L1Cr+Thrw==} + /@next/swc-win32-ia32-msvc@13.5.6: + resolution: {integrity: sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1929,8 +1929,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.1.3: - resolution: {integrity: sha512-uC2DaDoWH7h1P/aJ4Fok3Xiw6P0Lo4ez7NbowW2VGNXw/Xv6tOuLUcxhBYZxsSUJtpeknCi8/fvnSpyCFp4Rcg==} + /@next/swc-win32-x64-msvc@13.5.6: + resolution: {integrity: sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -4184,7 +4184,7 @@ packages: '@trpc/server': 10.45.2 dev: false - /@trpc/next@10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/react-query@10.45.2)(@trpc/server@10.45.2)(next@14.1.3)(react-dom@18.2.0)(react@18.2.0): + /@trpc/next@10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/react-query@10.45.2)(@trpc/server@10.45.2)(next@13.5.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-RSORmfC+/nXdmRY1pQ0AalsVgSzwNAFbZLYHiTvPM5QQ8wmMEHilseCYMXpu0se/TbPt9zVR6Ka2d7O6zxKkXg==} peerDependencies: '@tanstack/react-query': ^4.18.0 @@ -4199,7 +4199,7 @@ packages: '@trpc/client': 10.45.2(@trpc/server@10.45.2) '@trpc/react-query': 10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/server@10.45.2)(react-dom@18.2.0)(react@18.2.0) '@trpc/server': 10.45.2 - next: 14.1.3(react-dom@18.2.0)(react@18.2.0) + next: 13.5.6(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -5619,6 +5619,10 @@ packages: dependencies: is-glob: 4.0.3 + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: false + /glob@10.3.10: resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} engines: {node: '>=16 || 14 >=14.17'} @@ -6182,14 +6186,14 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /next-themes@0.2.1(next@14.1.3)(react-dom@18.2.0)(react@18.2.0): + /next-themes@0.2.1(next@13.5.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: next: '*' react: '*' react-dom: '*' dependencies: - next: 14.1.3(react-dom@18.2.0)(react@18.2.0) + next: 13.5.6(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -6198,9 +6202,9 @@ packages: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: true - /next@14.1.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-oexgMV2MapI0UIWiXKkixF8J8ORxpy64OuJ/J9oVUmIthXOUCcuVEZX+dtpgq7wIfIqtBwQsKEDXejcjTsan9g==} - engines: {node: '>=18.17.0'} + /next@13.5.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==} + engines: {node: '>=16.14.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 @@ -6213,25 +6217,25 @@ packages: sass: optional: true dependencies: - '@next/env': 14.1.3 + '@next/env': 13.5.6 '@swc/helpers': 0.5.2 busboy: 1.6.0 caniuse-lite: 1.0.30001598 - graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0) + watchpack: 2.4.0 optionalDependencies: - '@next/swc-darwin-arm64': 14.1.3 - '@next/swc-darwin-x64': 14.1.3 - '@next/swc-linux-arm64-gnu': 14.1.3 - '@next/swc-linux-arm64-musl': 14.1.3 - '@next/swc-linux-x64-gnu': 14.1.3 - '@next/swc-linux-x64-musl': 14.1.3 - '@next/swc-win32-arm64-msvc': 14.1.3 - '@next/swc-win32-ia32-msvc': 14.1.3 - '@next/swc-win32-x64-msvc': 14.1.3 + '@next/swc-darwin-arm64': 13.5.6 + '@next/swc-darwin-x64': 13.5.6 + '@next/swc-linux-arm64-gnu': 13.5.6 + '@next/swc-linux-arm64-musl': 13.5.6 + '@next/swc-linux-x64-gnu': 13.5.6 + '@next/swc-linux-x64-musl': 13.5.6 + '@next/swc-win32-arm64-msvc': 13.5.6 + '@next/swc-win32-ia32-msvc': 13.5.6 + '@next/swc-win32-x64-msvc': 13.5.6 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -7343,6 +7347,14 @@ packages: d3-timer: 3.0.1 dev: false + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: false + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: false From 1b6d4273ccf20ab05ef2b7b7eecccaf462408dd3 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 4 May 2024 10:55:05 -0600 Subject: [PATCH 07/41] fix: prevent to have empty traefik config in order to prevent domain crashes #38 --- server/api/routers/domain.ts | 2 +- server/api/services/application.ts | 3 +-- server/utils/traefik/domain.ts | 13 +++++++++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/server/api/routers/domain.ts b/server/api/routers/domain.ts index 2abe710c3..ace938c01 100644 --- a/server/api/routers/domain.ts +++ b/server/api/routers/domain.ts @@ -52,7 +52,7 @@ export const domainRouter = createTRPCRouter({ .mutation(async ({ input }) => { const domain = await findDomainById(input.domainId); const result = await removeDomainById(input.domainId); - removeDomain(domain.application.appName, domain.uniqueConfigKey); + await removeDomain(domain.application.appName, domain.uniqueConfigKey); return result; }), diff --git a/server/api/services/application.ts b/server/api/services/application.ts index d7efc4339..d5da79c40 100644 --- a/server/api/services/application.ts +++ b/server/api/services/application.ts @@ -36,9 +36,8 @@ export const createApplication = async ( }); } - createTraefikConfig(newApplication.appName); - if (process.env.NODE_ENV === "development") { + createTraefikConfig(newApplication.appName); await tx.insert(domains).values({ applicationId: newApplication.applicationId, host: `${newApplication.appName}.docker.localhost`, diff --git a/server/utils/traefik/domain.ts b/server/utils/traefik/domain.ts index cf0faa17e..689afbbb9 100644 --- a/server/utils/traefik/domain.ts +++ b/server/utils/traefik/domain.ts @@ -1,6 +1,7 @@ import { createServiceConfig, loadOrCreateConfig, + removeTraefikConfig, writeTraefikConfig, } from "./application"; import type { ApplicationNested } from "../builders"; @@ -23,7 +24,7 @@ export const manageDomain = async (app: ApplicationNested, domain: Domain) => { writeTraefikConfig(config, appName); }; -export const removeDomain = (appName: string, uniqueKey: number) => { +export const removeDomain = async (appName: string, uniqueKey: number) => { const config: FileConfig = loadOrCreateConfig(appName); const routerKey = `${appName}-router-${uniqueKey}`; @@ -35,7 +36,15 @@ export const removeDomain = (appName: string, uniqueKey: number) => { delete config.http.services[serviceKey]; } - writeTraefikConfig(config, appName); + // verify if is the last router if so we delete the router + if ( + config?.http?.routers && + Object.keys(config?.http?.routers).length === 0 + ) { + await removeTraefikConfig(appName); + } else { + writeTraefikConfig(config, appName); + } }; export const createRouterConfig = async ( From 0d3d700e4c72b9ed99f6ef2f14f6014068a76dfd Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 4 May 2024 12:42:39 -0600 Subject: [PATCH 08/41] revert: back to next 14 and remove arm/v7 due to unsuported versions from nextjs side --- docker/build.sh | 2 +- docker/push.sh | 4 +- package.json | 2 +- pnpm-lock.yaml | 110 +++++++++++++++++++++++------------------------- 4 files changed, 57 insertions(+), 61 deletions(-) diff --git a/docker/build.sh b/docker/build.sh index e0e5b14a9..ef38fa4fa 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -12,6 +12,6 @@ fi BUILDER=$(docker buildx create --use) -docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 --pull --rm -t "dokploy/dokploy:${TAG}" -f 'Dockerfile' . +docker buildx build --platform linux/amd64,linux/arm64 --pull --rm -t "dokploy/dokploy:${TAG}" -f 'Dockerfile' . docker buildx rm $BUILDER diff --git a/docker/push.sh b/docker/push.sh index f8a7055ca..1c41f68aa 100755 --- a/docker/push.sh +++ b/docker/push.sh @@ -8,11 +8,11 @@ BUILDER=$(docker buildx create --use) if [ "$BUILD_TYPE" == "canary" ]; then TAG="canary" echo PUSHING CANARY - docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 --pull --rm -t "dokploy/dokploy:${TAG}" -f 'Dockerfile' --push . + docker buildx build --platform linux/amd64,linux/arm64 --pull --rm -t "dokploy/dokploy:${TAG}" -f 'Dockerfile' --push . else echo "PUSHING PRODUCTION" VERSION=$(node -p "require('./package.json').version") - docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 --pull --rm -t "dokploy/dokploy:latest" -t "dokploy/dokploy:${VERSION}" -f 'Dockerfile' --push . + docker buildx build --platform linux/amd64,linux/arm64 --pull --rm -t "dokploy/dokploy:latest" -t "dokploy/dokploy:${VERSION}" -f 'Dockerfile' --push . fi docker buildx rm $BUILDER \ No newline at end of file diff --git a/package.json b/package.json index 101dd3e63..258f32bf7 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "lucia": "^3.0.1", "lucide-react": "^0.312.0", "nanoid": "3", - "next": "^13.2.4", + "next": "^14.1.3", "next-themes": "^0.2.1", "node-os-utils": "1.3.7", "node-pty": "1.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f8fa596c4..61d1677b7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -85,7 +85,7 @@ dependencies: version: 10.45.2(@trpc/server@10.45.2) '@trpc/next': specifier: ^10.43.6 - version: 10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/react-query@10.45.2)(@trpc/server@10.45.2)(next@13.5.6)(react-dom@18.2.0)(react@18.2.0) + version: 10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/react-query@10.45.2)(@trpc/server@10.45.2)(next@14.2.3)(react-dom@18.2.0)(react@18.2.0) '@trpc/react-query': specifier: ^10.43.6 version: 10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/server@10.45.2)(react-dom@18.2.0)(react@18.2.0) @@ -156,11 +156,11 @@ dependencies: specifier: '3' version: 3.3.7 next: - specifier: ^13.2.4 - version: 13.5.6(react-dom@18.2.0)(react@18.2.0) + specifier: ^14.1.3 + version: 14.2.3(react-dom@18.2.0)(react@18.2.0) next-themes: specifier: ^0.2.1 - version: 0.2.1(next@13.5.6)(react-dom@18.2.0)(react@18.2.0) + version: 0.2.1(next@14.2.3)(react-dom@18.2.0)(react@18.2.0) node-os-utils: specifier: 1.3.7 version: 1.3.7 @@ -1853,12 +1853,12 @@ packages: dev: false optional: true - /@next/env@13.5.6: - resolution: {integrity: sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==} + /@next/env@14.2.3: + resolution: {integrity: sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==} dev: false - /@next/swc-darwin-arm64@13.5.6: - resolution: {integrity: sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==} + /@next/swc-darwin-arm64@14.2.3: + resolution: {integrity: sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1866,8 +1866,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@13.5.6: - resolution: {integrity: sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA==} + /@next/swc-darwin-x64@14.2.3: + resolution: {integrity: sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1875,8 +1875,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@13.5.6: - resolution: {integrity: sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg==} + /@next/swc-linux-arm64-gnu@14.2.3: + resolution: {integrity: sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1884,8 +1884,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@13.5.6: - resolution: {integrity: sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q==} + /@next/swc-linux-arm64-musl@14.2.3: + resolution: {integrity: sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1893,8 +1893,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@13.5.6: - resolution: {integrity: sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw==} + /@next/swc-linux-x64-gnu@14.2.3: + resolution: {integrity: sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1902,8 +1902,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@13.5.6: - resolution: {integrity: sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ==} + /@next/swc-linux-x64-musl@14.2.3: + resolution: {integrity: sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1911,8 +1911,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@13.5.6: - resolution: {integrity: sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg==} + /@next/swc-win32-arm64-msvc@14.2.3: + resolution: {integrity: sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1920,8 +1920,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@13.5.6: - resolution: {integrity: sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg==} + /@next/swc-win32-ia32-msvc@14.2.3: + resolution: {integrity: sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1929,8 +1929,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@13.5.6: - resolution: {integrity: sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ==} + /@next/swc-win32-x64-msvc@14.2.3: + resolution: {integrity: sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -4124,9 +4124,14 @@ packages: tslib: 2.6.2 dev: false - /@swc/helpers@0.5.2: - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: false + + /@swc/helpers@0.5.5: + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} dependencies: + '@swc/counter': 0.1.3 tslib: 2.6.2 dev: false @@ -4184,7 +4189,7 @@ packages: '@trpc/server': 10.45.2 dev: false - /@trpc/next@10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/react-query@10.45.2)(@trpc/server@10.45.2)(next@13.5.6)(react-dom@18.2.0)(react@18.2.0): + /@trpc/next@10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/react-query@10.45.2)(@trpc/server@10.45.2)(next@14.2.3)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-RSORmfC+/nXdmRY1pQ0AalsVgSzwNAFbZLYHiTvPM5QQ8wmMEHilseCYMXpu0se/TbPt9zVR6Ka2d7O6zxKkXg==} peerDependencies: '@tanstack/react-query': ^4.18.0 @@ -4199,7 +4204,7 @@ packages: '@trpc/client': 10.45.2(@trpc/server@10.45.2) '@trpc/react-query': 10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/server@10.45.2)(react-dom@18.2.0)(react@18.2.0) '@trpc/server': 10.45.2 - next: 13.5.6(react-dom@18.2.0)(react@18.2.0) + next: 14.2.3(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -5619,10 +5624,6 @@ packages: dependencies: is-glob: 4.0.3 - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: false - /glob@10.3.10: resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} engines: {node: '>=16 || 14 >=14.17'} @@ -6186,14 +6187,14 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /next-themes@0.2.1(next@13.5.6)(react-dom@18.2.0)(react@18.2.0): + /next-themes@0.2.1(next@14.2.3)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: next: '*' react: '*' react-dom: '*' dependencies: - next: 13.5.6(react-dom@18.2.0)(react@18.2.0) + next: 14.2.3(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -6202,40 +6203,43 @@ packages: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: true - /next@13.5.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==} - engines: {node: '>=16.14.0'} + /next@14.2.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==} + engines: {node: '>=18.17.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true + '@playwright/test': + optional: true sass: optional: true dependencies: - '@next/env': 13.5.6 - '@swc/helpers': 0.5.2 + '@next/env': 14.2.3 + '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001598 + graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0) - watchpack: 2.4.0 optionalDependencies: - '@next/swc-darwin-arm64': 13.5.6 - '@next/swc-darwin-x64': 13.5.6 - '@next/swc-linux-arm64-gnu': 13.5.6 - '@next/swc-linux-arm64-musl': 13.5.6 - '@next/swc-linux-x64-gnu': 13.5.6 - '@next/swc-linux-x64-musl': 13.5.6 - '@next/swc-win32-arm64-msvc': 13.5.6 - '@next/swc-win32-ia32-msvc': 13.5.6 - '@next/swc-win32-x64-msvc': 13.5.6 + '@next/swc-darwin-arm64': 14.2.3 + '@next/swc-darwin-x64': 14.2.3 + '@next/swc-linux-arm64-gnu': 14.2.3 + '@next/swc-linux-arm64-musl': 14.2.3 + '@next/swc-linux-x64-gnu': 14.2.3 + '@next/swc-linux-x64-musl': 14.2.3 + '@next/swc-win32-arm64-msvc': 14.2.3 + '@next/swc-win32-ia32-msvc': 14.2.3 + '@next/swc-win32-x64-msvc': 14.2.3 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -7347,14 +7351,6 @@ packages: d3-timer: 3.0.1 dev: false - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - dev: false - /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: false From 3990c39471ddc2620de12627721b8fea7c401b06 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 4 May 2024 13:22:04 -0600 Subject: [PATCH 09/41] refactor: remove build on PR due to hight build time --- .github/workflows/pull-request.yml | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index cd28143d3..02d9bce92 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -31,28 +31,6 @@ jobs: - name: Run Build run: pnpm build - - build-docker-on-pr: - if: github.event_name == 'pull_request' - needs: build-app - runs-on: ubuntu-latest - steps: - - name: Check out the code - uses: actions/checkout@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Prepare .env file - run: | - cp .env.production.example .env.production - - - name: Run custom Docker build script - run: | - chmod +x ./docker/build.sh - echo "Building Docker image for ${{ github.base_ref }}" - ./docker/build.sh ${{ github.base_ref == 'canary' && 'canary' || '' }} - build-and-push-docker-on-push: if: github.event_name == 'push' runs-on: ubuntu-latest From 0055a8322f80fb068d888757a19e2d7d6839df22 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 5 May 2024 03:53:48 -0600 Subject: [PATCH 10/41] fix(#42): initialize the database as a first service --- server/server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/server.ts b/server/server.ts index 20af88ade..cc2bd042e 100644 --- a/server/server.ts +++ b/server/server.ts @@ -48,9 +48,9 @@ void app.prepare().then(async () => { await initializeNetwork(); createDefaultTraefikConfig(); createDefaultServerTraefikConfig(); + await initializePostgres(); await initializeTraefik(); await initializeRedis(); - await initializePostgres(); initCronJobs(); welcomeServer(); From b167e592d3b45cae036a7b8f02219b00dcf7b47a Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 5 May 2024 04:09:27 -0600 Subject: [PATCH 11/41] refactor: add circle.yml --- .github/workflows/circle.yml | 61 ++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 .github/workflows/circle.yml diff --git a/.github/workflows/circle.yml b/.github/workflows/circle.yml new file mode 100644 index 000000000..145480c22 --- /dev/null +++ b/.github/workflows/circle.yml @@ -0,0 +1,61 @@ +version: 2.1 + +orbs: + node: circleci/node@5.0.0 + docker: circleci/docker@2.1.1 + +workflows: + version: 2 + build-and-deploy: + jobs: + - build-app: + filters: + branches: + only: + - main + - canary + context: + - pnpm + - build-and-push-docker-on-push: + filters: + branches: + only: + - main + - canary + context: + - docker + +jobs: + build-app: + docker: + - image: cimg/node:18.18.0 + steps: + - checkout + - node/install: + install-yarn: false + install-npm: false + node-version: "18.18.0" + - run: npm install -g pnpm@8 + - run: pnpm install + - run: pnpm build + + build-and-push-docker-on-push: + docker: + - image: cimg/base:stable + steps: + - checkout + - setup_remote_docker: + docker_layer_caching: true + - docker/check: + - docker/login: + username: DOCKERHUB_USERNAME + password: DOCKERHUB_TOKEN + - run: + name: Prepare .env file + command: | + cp .env.production.example .env.production + - run: + name: Build and push Docker image using custom script + command: | + chmod +x ./docker/push.sh + ./docker/push.sh ${CIRCLE_BRANCH == 'canary' && echo 'canary' || echo ''} From 505fc3efff87dc855d25df787f6bca298f8f0575 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 5 May 2024 11:52:43 -0600 Subject: [PATCH 12/41] chore: upgrade version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 258f32bf7..9afbe835e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dokploy", - "version": "v0.0.1", + "version": "v0.0.2", "private": true, "license": "AGPL-3.0-only", "type": "module", From 237a01d7ae354d9f0b5d5d59fe170981b258a9ab Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 5 May 2024 11:53:36 -0600 Subject: [PATCH 13/41] remove file --- .github/workflows/circle.yml | 61 ------------------------------------ 1 file changed, 61 deletions(-) delete mode 100644 .github/workflows/circle.yml diff --git a/.github/workflows/circle.yml b/.github/workflows/circle.yml deleted file mode 100644 index 145480c22..000000000 --- a/.github/workflows/circle.yml +++ /dev/null @@ -1,61 +0,0 @@ -version: 2.1 - -orbs: - node: circleci/node@5.0.0 - docker: circleci/docker@2.1.1 - -workflows: - version: 2 - build-and-deploy: - jobs: - - build-app: - filters: - branches: - only: - - main - - canary - context: - - pnpm - - build-and-push-docker-on-push: - filters: - branches: - only: - - main - - canary - context: - - docker - -jobs: - build-app: - docker: - - image: cimg/node:18.18.0 - steps: - - checkout - - node/install: - install-yarn: false - install-npm: false - node-version: "18.18.0" - - run: npm install -g pnpm@8 - - run: pnpm install - - run: pnpm build - - build-and-push-docker-on-push: - docker: - - image: cimg/base:stable - steps: - - checkout - - setup_remote_docker: - docker_layer_caching: true - - docker/check: - - docker/login: - username: DOCKERHUB_USERNAME - password: DOCKERHUB_TOKEN - - run: - name: Prepare .env file - command: | - cp .env.production.example .env.production - - run: - name: Build and push Docker image using custom script - command: | - chmod +x ./docker/push.sh - ./docker/push.sh ${CIRCLE_BRANCH == 'canary' && echo 'canary' || echo ''} From 2170c3f1e8f78a2e99b05175751169c2be8b274e Mon Sep 17 00:00:00 2001 From: Olivier Esuka Date: Tue, 7 May 2024 21:23:52 +0200 Subject: [PATCH 14/41] chore: correct server port log for non 3000 port --- server/server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/server.ts b/server/server.ts index cc2bd042e..8a15362ad 100644 --- a/server/server.ts +++ b/server/server.ts @@ -74,7 +74,7 @@ async function welcomeServer() { "", "Dokploy server is up and running!", "Please wait for 15 seconds before opening the browser.", - ` http://${ip}:3000`, + ` http://${ip}:${PORT}`, "", "", ].join("\n"), From d1966d43f7b7bb3086b1cc8329b1b30b7f29effa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Victor=20Krusenstr=C3=A5hle?= Date: Tue, 7 May 2024 21:40:12 +0200 Subject: [PATCH 15/41] Correct Postgres url from password:password to user:password Postgres external url currently returns password:password when it should be user:password. --- .../postgres/general/show-external-postgres-credentials.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/dashboard/postgres/general/show-external-postgres-credentials.tsx b/components/dashboard/postgres/general/show-external-postgres-credentials.tsx index 08bae8c61..215356cee 100644 --- a/components/dashboard/postgres/general/show-external-postgres-credentials.tsx +++ b/components/dashboard/postgres/general/show-external-postgres-credentials.tsx @@ -80,7 +80,7 @@ export const ShowExternalPostgresCredentials = ({ postgresId }: Props) => { const hostname = window.location.hostname; const port = form.watch("externalPort") || data?.externalPort; - return `postgresql://${data?.databasePassword}:${data?.databasePassword}@${hostname}:${port}/${data?.databaseName}`; + return `postgresql://${data?.databaseUser}:${data?.databasePassword}@${hostname}:${port}/${data?.databaseName}`; }; setConnectionUrl(buildConnectionUrl()); From 312d66f0fa1399c29344207412b533b8a603829b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Jim=C3=A9nez?= Date: Thu, 9 May 2024 14:03:32 -0400 Subject: [PATCH 16/41] fix: Properly parse environment variables --- server/utils/docker/utils.ts | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/server/utils/docker/utils.ts b/server/utils/docker/utils.ts index 21a6614b7..3df2638ab 100644 --- a/server/utils/docker/utils.ts +++ b/server/utils/docker/utils.ts @@ -5,6 +5,7 @@ import { APPLICATIONS_PATH, docker } from "@/server/constants"; import type { ContainerInfo, ResourceRequirements } from "dockerode"; import type { ApplicationNested } from "../builders"; import { execAsync } from "../process/execAsync"; +import { parse } from "dotenv"; interface RegistryAuth { username: string; @@ -154,15 +155,7 @@ export const removeService = async (appName: string) => { }; export const prepareEnvironmentVariables = (env: string | null) => - env - ?.split("\n") - .map((line) => line.trim()) // Trim whitespace - .filter((line) => line && !line.startsWith("#")) // Exclude empty lines and comments - .map((envVar) => { - let [key, value] = envVar.split("=", 2); - value = value?.replace(/^"(.*)"$/, "$1"); // Remove surrounding double quotes - return `${key}=${value}`; - }) || []; + Object.entries(parse(env ?? "")).map(([key, value]) => `${key}=${value}`); export const generateVolumeMounts = (mounts: ApplicationNested["mounts"]) => { if (!mounts || mounts.length === 0) { From a83834fdefa412bdd5f677b068d7098a3ae266e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Jim=C3=A9nez?= Date: Thu, 9 May 2024 14:12:16 -0400 Subject: [PATCH 17/41] format fix --- server/utils/docker/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/utils/docker/utils.ts b/server/utils/docker/utils.ts index 3df2638ab..2cd881bbc 100644 --- a/server/utils/docker/utils.ts +++ b/server/utils/docker/utils.ts @@ -155,7 +155,7 @@ export const removeService = async (appName: string) => { }; export const prepareEnvironmentVariables = (env: string | null) => - Object.entries(parse(env ?? "")).map(([key, value]) => `${key}=${value}`); + Object.entries(parse(env ?? "")).map(([key, value]) => `${key}=${value}`); export const generateVolumeMounts = (mounts: ApplicationNested["mounts"]) => { if (!mounts || mounts.length === 0) { From eb055687989c5d3e8e1b490b4a1d61e0c6778811 Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Fri, 10 May 2024 07:29:06 +0800 Subject: [PATCH 18/41] Update README.md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README.md | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 19e44df07..fde9339ab 100644 --- a/README.md +++ b/README.md @@ -11,35 +11,34 @@ -Dokploy is a free self-hostable Platform as a Service (PaaS) that simplifies the deployment and management of applications and databases using Docker and Traefik. Designed to enhance efficiency and security, Dokploy allows you to deploy your applications on any VPS. +Dokploy 是一个免费的可自行托管的平台即服务(PaaS),它使用 Docker 和 Traefik 简化了应用程序和数据库的部署和管理。 Dokploy 旨在提高效率和安全性,允许您在任何 VPS 上部署应用程序。 - -## 🌟 Features - -- **Applications**: Deploy any type of application (Node.js, PHP, Python, Go, Ruby, etc.) with ease. -- **Databases**: Create and manage databases with support for MySQL, PostgreSQL, MongoDB, MariaDB, Redis, and more. -- **Docker Management**: Easily deploy and manage Docker containers. -- **Traefik Integration**: Automatically integrates with Traefik for routing and load balancing. -- **Real-time Monitoring**: Monitor CPU, memory, storage, and network usage. -- **Database Backups**: Automate backups with support for multiple storage destinations. +## 🌟 特点 -## 🚀 Getting Started +- **应用**:轻松部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby 等)。 +- **数据库**:创建和管理数据库,支持 MySQL、PostgreSQL、MongoDB、MariaDB、Redis 等。 +- **Docker 管理**: 轻松部署和管理 Docker 容器。 +- **集成特拉菲克**: 自动与特拉菲克集成,用于路由选择和负载平衡。 +- **实时监控**: 监控 CPU、内存、存储和网络使用情况。 +- **数据库备份**: 支持多个存储目的地,实现自动备份。 -To get started run the following command in a VPS: +## 🚀 入门 + +要开始使用,请在 VPS 中运行以下命令: ```bash curl -sSL https://dokploy.com/install.sh | sh ``` -Tested Systems: +经过测试的系统: - Ubuntu 20.04 - Debian 11 -## 📄 Documentation +## 📄 文件 -For detailed documentation, visit [docs.dokploy.com/docs](https://docs.dokploy.com). +有关详细文档,请访问 [docs.dokploy.com/docs](https://docs.dokploy.com). From bd47b6f50ab37f7f4a0bdb846476c57ec6a708c9 Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Fri, 10 May 2024 07:35:09 +0800 Subject: [PATCH 19/41] Rename README.md to README zhCN .md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README.md => README zhCN .md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename README.md => README zhCN .md (100%) diff --git a/README.md b/README zhCN .md similarity index 100% rename from README.md rename to README zhCN .md From b6a088ac6b50b1527916e99e8e6df2fadfbad4f7 Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Fri, 10 May 2024 07:42:01 +0800 Subject: [PATCH 20/41] Create README.md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 000000000..d3c0e2965 --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ + + +
+

Dokploy

+
+ +
+Reflex Logo +
+
+ + + +Dokploy 是一个免费的可自行托管的平台即服务(PaaS),它使用 Docker 和 Traefik 简化了应用程序和数据库的部署和管理。 Dokploy 旨在提高效率和安全性,允许您在任何 VPS 上部署应用程序。 + + +## 🌟 特点 + + +- **应用**:轻松部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby 等)。 +- **数据库**:创建和管理数据库,支持 MySQL、PostgreSQL、MongoDB、MariaDB、Redis 等。 +- **Docker 管理**: 轻松部署和管理 Docker 容器。 +- **集成特拉菲克**: 自动与特拉菲克集成,用于路由选择和负载平衡。 +- **实时监控**: 监控 CPU、内存、存储和网络使用情况。 +- **数据库备份**: 支持多个存储目的地,实现自动备份。 + +## 🚀 入门 + +要开始使用,请在 VPS 中运行以下命令: + + +```bash +curl -sSL https://dokploy.com/install.sh | sh +``` + +经过测试的系统: + +- Ubuntu 20.04 +- Debian 11 + +## 📄 文件 + +有关详细文档,请访问 [docs.dokploy.com/docs](https://docs.dokploy.com). From 907dc0784fe0be06295e4a0bbc1918d21fa0c0ba Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Thu, 9 May 2024 22:11:33 -0600 Subject: [PATCH 21/41] chore: bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9afbe835e..bb7284270 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dokploy", - "version": "v0.0.2", + "version": "v0.0.3", "private": true, "license": "AGPL-3.0-only", "type": "module", From 824613cce9ff9a72bc6a3631359e0570191d9abe Mon Sep 17 00:00:00 2001 From: hehehai Date: Sat, 11 May 2024 16:58:55 +0800 Subject: [PATCH 22/41] docs: reset password command fix --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bbda3053c..67a8e3ece 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -107,7 +107,7 @@ pnpm run docker:push In the case you lost your password, you can reset it using the following command ```bash -pnpm run build-server +pnpm run reset-password ``` If you want to test the webhooks on development mode using localtunnel, make sure to install `localtunnel` @@ -150,4 +150,4 @@ curl -sSL "https://github.com/buildpacks/pack/releases/download/v0.32.1/pack-v0. - If your pull request fixes an open issue, please reference the issue in the pull request description. - Once your pull request is merged, you will be automatically added as a contributor to the project. -Thank you for your contribution! \ No newline at end of file +Thank you for your contribution! From 0a764fbc55a32d5241fa4612a4c5615603b06bbd Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sat, 11 May 2024 17:06:42 +0800 Subject: [PATCH 23/41] Delete README zhCN .md Delete the file that is not part of the original md presentation file. Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README zhCN .md | 44 -------------------------------------------- 1 file changed, 44 deletions(-) delete mode 100644 README zhCN .md diff --git a/README zhCN .md b/README zhCN .md deleted file mode 100644 index fde9339ab..000000000 --- a/README zhCN .md +++ /dev/null @@ -1,44 +0,0 @@ - - -
-

Dokploy

-
- -
-Reflex Logo -
-
- - - -Dokploy 是一个免费的可自行托管的平台即服务(PaaS),它使用 Docker 和 Traefik 简化了应用程序和数据库的部署和管理。 Dokploy 旨在提高效率和安全性,允许您在任何 VPS 上部署应用程序。 - - -## 🌟 特点 - - -- **应用**:轻松部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby 等)。 -- **数据库**:创建和管理数据库,支持 MySQL、PostgreSQL、MongoDB、MariaDB、Redis 等。 -- **Docker 管理**: 轻松部署和管理 Docker 容器。 -- **集成特拉菲克**: 自动与特拉菲克集成,用于路由选择和负载平衡。 -- **实时监控**: 监控 CPU、内存、存储和网络使用情况。 -- **数据库备份**: 支持多个存储目的地,实现自动备份。 - -## 🚀 入门 - -要开始使用,请在 VPS 中运行以下命令: - - -```bash -curl -sSL https://dokploy.com/install.sh | sh -``` - -经过测试的系统: - -- Ubuntu 20.04 -- Debian 11 - -## 📄 文件 - -有关详细文档,请访问 [docs.dokploy.com/docs](https://docs.dokploy.com). - From 18a6e6ac8c11b73d98ef51cf1ad6b1590cd5ff3b Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sat, 11 May 2024 17:23:26 +0800 Subject: [PATCH 24/41] Delete README.md Because of the renaming of the md introduction file in the second revision, it is the third revision and not part of the original file that was changed at the beginning, so that version of the file is deleted and only the original md file is kept. Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README.md | 43 ------------------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index d3c0e2965..000000000 --- a/README.md +++ /dev/null @@ -1,43 +0,0 @@ - - -
-

Dokploy

-
- -
-Reflex Logo -
-
- - - -Dokploy 是一个免费的可自行托管的平台即服务(PaaS),它使用 Docker 和 Traefik 简化了应用程序和数据库的部署和管理。 Dokploy 旨在提高效率和安全性,允许您在任何 VPS 上部署应用程序。 - - -## 🌟 特点 - - -- **应用**:轻松部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby 等)。 -- **数据库**:创建和管理数据库,支持 MySQL、PostgreSQL、MongoDB、MariaDB、Redis 等。 -- **Docker 管理**: 轻松部署和管理 Docker 容器。 -- **集成特拉菲克**: 自动与特拉菲克集成,用于路由选择和负载平衡。 -- **实时监控**: 监控 CPU、内存、存储和网络使用情况。 -- **数据库备份**: 支持多个存储目的地,实现自动备份。 - -## 🚀 入门 - -要开始使用,请在 VPS 中运行以下命令: - - -```bash -curl -sSL https://dokploy.com/install.sh | sh -``` - -经过测试的系统: - -- Ubuntu 20.04 -- Debian 11 - -## 📄 文件 - -有关详细文档,请访问 [docs.dokploy.com/docs](https://docs.dokploy.com). From 6f05047d6c1cea47ed9a8b72846561a1fdfc89ca Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sat, 11 May 2024 17:58:06 +0800 Subject: [PATCH 25/41] Create README-zh.md Chinese md introduction file final version Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README-zh.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 README-zh.md diff --git a/README-zh.md b/README-zh.md new file mode 100644 index 000000000..bf58f68e5 --- /dev/null +++ b/README-zh.md @@ -0,0 +1,36 @@ + + +
+

Dokploy

+
+ +
+Reflex Logo +
+
+ + + +Dokploy 是一个免费的自托管平台即服务 (PaaS),它使用 Docker 和 Traefik 简化了应用程序和数据库的部署和管理。 Dokploy 旨在提高效率和安全性,允许您在任何 VPS 上部署应用程序。 + +##🌟 功能 +-**应用程序**: 轻松部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby 等)。-数据库: 创建和管理数据库,支持 MySQL、PostgreSQL、MongoDB、MariaDB、Redis 等。 +-**Docker 管理**: 轻松部署和管理 Docker 容器。 +-**Traefik 集成**: 自动与 Traefik 集成,用于路由和负载均衡。 +实时监控: 监控 CPU、内存、存储和网络使用情况。 +数据库备份: 支持多种存储目的地自动备份。 +##🚀 入门 +要开始使用,请在 VPS 上运行以下命令: + +```bash +curl -sSL https://dokploy.com/install.sh | sh +``` + +经过测试的系统: + +- Ubuntu 20.04 +- Debian 11 + +## 📄 文档 + +如需查看详细的文档资料,请访问[docs.dokploy.com/docs](https://docs.dokploy.com). From 156cac288b6be162b125d291960b3cc7747d2f62 Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sat, 11 May 2024 18:04:09 +0800 Subject: [PATCH 26/41] Update README-zh.md Modify display exceptions Forgot the space, so the two ### are not effective Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README-zh.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README-zh.md b/README-zh.md index bf58f68e5..6afe816fa 100644 --- a/README-zh.md +++ b/README-zh.md @@ -13,13 +13,14 @@ Dokploy 是一个免费的自托管平台即服务 (PaaS),它使用 Docker 和 Traefik 简化了应用程序和数据库的部署和管理。 Dokploy 旨在提高效率和安全性,允许您在任何 VPS 上部署应用程序。 -##🌟 功能 +## 🌟 功能 -**应用程序**: 轻松部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby 等)。-数据库: 创建和管理数据库,支持 MySQL、PostgreSQL、MongoDB、MariaDB、Redis 等。 -**Docker 管理**: 轻松部署和管理 Docker 容器。 -**Traefik 集成**: 自动与 Traefik 集成,用于路由和负载均衡。 实时监控: 监控 CPU、内存、存储和网络使用情况。 数据库备份: 支持多种存储目的地自动备份。 -##🚀 入门 + +## 🚀 入门 要开始使用,请在 VPS 上运行以下命令: ```bash @@ -30,7 +31,7 @@ curl -sSL https://dokploy.com/install.sh | sh - Ubuntu 20.04 - Debian 11 - +- ## 📄 文档 如需查看详细的文档资料,请访问[docs.dokploy.com/docs](https://docs.dokploy.com). From 5682cc12bc69296ef605929a0cebacd874f09a5f Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 11 May 2024 16:27:27 -0600 Subject: [PATCH 27/41] chore: update terms and conditions --- TERMS_AND_CONDITIONS.md | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/TERMS_AND_CONDITIONS.md b/TERMS_AND_CONDITIONS.md index acf376cd0..56ef97fb1 100644 --- a/TERMS_AND_CONDITIONS.md +++ b/TERMS_AND_CONDITIONS.md @@ -1,25 +1,22 @@ # Terms & Conditions +**Dokploy core** is a free and open-source solution intended as an alternative to established cloud platforms like Vercel and Netlify. -Dokploy core is a free and open-source program alternative to Vercel, Netlify, and other cloud services. +The Dokploy team endeavors to mitigate potential defects and issues through stringent testing and adherence to principles of clean coding. Dokploy is provided "AS IS" without any warranties, express or implied. Refer to the [License](https://github.com/Dokploy/Dokploy/blob/main/LICENSE) for details on permissions and restrictions. -Developers of Dokploy do their best to prevent bugs and issues through rigorous testing processes and clean code principles. Dokploy is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and limitations under the [License](https://github.com/Dokploy/Dokploy/blob/main/LICENSE). - -By using Dokploy you agree to Terms and Conditions, and the license of Dokploy. ### Description of Service: -Dokploy core is an open-source program designed to streamline application deployment processes for personal and commercial use. Users are free to install, modify, and run Dokploy on their own machines or within their organizations to enhance their development and deployment workflows. While Dokploy encourages a wide range of uses to foster innovation and efficiency, it is crucial to note that selling Dokploy itself as a service or repackaging it as part of a commercial offering without explicit permission is strictly prohibited. This ensures that the open-source nature of Dokploy remains intact and benefits the community as a whole. +**Dokploy core** is an open-source tool designed to simplify the deployment of applications for both personal and business use. Users are permitted to install, modify, and operate Dokploy independently or within their organizations to improve their development and deployment operations. It is important to note that any commercial resale or redistribution of Dokploy as a service is strictly forbidden without explicit consent. This prohibition ensures the preservation of Dokploy's open-source character for the benefit of the entire community. ### Our Responsibility -Dokploy developers will do their best to ensure that Dokploy remains functional and major bugs are resolved quickly. If you have a feature request, you are more than welcome to open a request for it, but the ultimate decision whether or not the feature will be added is taken by Dokploy's core developers. +The Dokploy development team commits to maintaining the functionality of the software and addressing major issues promptly. While we welcome suggestions for new features, the decision to include them rests solely with the core developers of Dokploy. ### Usage Data -Dokploy doesn't collect any usage data. It is a free and open-source program, and it is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +**Dokploy** does not collect any user data. It is distributed as a free and open-source tool under the terms of "AS IS", without any implied warranties or conditions. -### Future changes +### Future Changes -Terms of Service / Terms & Conditions may change at any point without a prior notice. \ No newline at end of file +The Terms of Service and Terms & Conditions are subject to change without prior notice. From 71f9e7bbd1ed5fe2d24cf7f12bf8d14c30bbec0f Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 11 May 2024 16:27:34 -0600 Subject: [PATCH 28/41] chore: update license --- LICENSE.MD | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/LICENSE.MD b/LICENSE.MD index abf659ebf..9b02d8669 100644 --- a/LICENSE.MD +++ b/LICENSE.MD @@ -1,4 +1,4 @@ -Copyright 2024-2024 Mauricio Siu. +Copyright 2024 Mauricio Siu. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -13,23 +13,12 @@ See the License for the specific language governing permissions and limitations under the License. Appendix: -In case of a conflict, the terms of this appendix supersede the general apache license. -- Unless provided with a written agreement or permission, the paid features of Dokploy (as a service) cannot be modified. -- Unless provided with a written agreement or permission, no persons are permitted to redistribute another paid version of Dokploy. -- Unless provided with a written agreement or permission, no persons are permitted to create the same paid version of Dokploy. -- Furthermore, any modifications of free features of Dokploy should be distributed as free & opensource software. - -Appendix B: - -- **Prohibition of Resale Without Permission:** Notwithstanding any provisions in the main body of the Apache License, Version 2.0, no party is permitted to sell, resell, or otherwise distribute for commercial gain, the software or any of its components, including both original and modified versions, through any form of commercial distribution channels, including but not limited to online marketplaces, software as a service (SaaS) platforms, or physical media distribution, without prior written consent from the copyright holder. - -- **Commercial Distribution:** Any form of distribution of Dokploy, whether for direct profit or indirect financial benefit, through commercial channels is strictly prohibited without a separate commercial agreement negotiated with the copyright holder. This includes but is not limited to, offerings on software marketplaces or through third-party distributors. - -- **Modification of Paid Features:** The paid features of Dokploy (as a service) may not be modified, integrated into other software, or redistributed in any form without explicit written permission from the copyright holder. - -- **Open Source Distribution of Free Features:** Any modifications to the free features of Dokploy must be distributed freely and must not be included in any paid or commercial package without complying with the open-source license terms stipulated in this agreement. - -If you have any questions, please feel free to reach out to us. +In cases of conflict, the provisions in this appendix supersede those in the general Apache License. +- **Modification of Paid Features:** Written consent or a formal agreement is required for modifying any paid features of Dokploy. +- **Prohibition of Unauthorized Resale:** No party is permitted to sell, resell, or otherwise distribute for commercial gain, the software or any of its components, including both original and modified versions, without prior written consent from the copyright holder. +- **Commercial Distribution:** Any distribution of Dokploy, whether for direct profit or indirect financial benefit, through commercial channels is strictly prohibited without a separate commercial agreement negotiated with the copyright holder. +- **Open Source Distribution of Free Features:** Any modifications to the free features of Dokploy must be distributed freely and must not be included in any paid or commercial package unless they comply with the license and appendix terms specified in this agreement. +For further inquiries or permissions, please contact us directly. From 9dffef71e57f5a1fec185a8eb4bbcebd5deb36c2 Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sun, 12 May 2024 09:36:31 +0800 Subject: [PATCH 29/41] Update README-zh.md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README-zh.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/README-zh.md b/README-zh.md index 6afe816fa..c10b38b51 100644 --- a/README-zh.md +++ b/README-zh.md @@ -13,15 +13,27 @@ Dokploy 是一个免费的自托管平台即服务 (PaaS),它使用 Docker 和 Traefik 简化了应用程序和数据库的部署和管理。 Dokploy 旨在提高效率和安全性,允许您在任何 VPS 上部署应用程序。 +## 语言 +**English**: + +[github.com/Dokploy/dokploy/blob/canary/README.md] +(https://github.com/Dokploy/dokploy/blob/canary/README.md) + +**Chinese**:[github.com/fxazkwxm/dokploy/blob/canary/README-zh.md](https://github.com/fxazkwxm/dokploy/blob/canary/README-zh.md) + + + + + ## 🌟 功能 --**应用程序**: 轻松部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby 等)。-数据库: 创建和管理数据库,支持 MySQL、PostgreSQL、MongoDB、MariaDB、Redis 等。 +**应用程序**: 轻松部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby 等)。-数据库: 创建和管理数据库,支持 MySQL、PostgreSQL、MongoDB、MariaDB、Redis 等。 -**Docker 管理**: 轻松部署和管理 Docker 容器。 -**Traefik 集成**: 自动与 Traefik 集成,用于路由和负载均衡。 实时监控: 监控 CPU、内存、存储和网络使用情况。 数据库备份: 支持多种存储目的地自动备份。 ## 🚀 入门 -要开始使用,请在 VPS 上运行以下命令: +要开始使用 请在VPS 上运行以下命令: ```bash curl -sSL https://dokploy.com/install.sh | sh From 6989047cbed4b8d43c829d332dcc082aa3fca925 Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sun, 12 May 2024 09:53:26 +0800 Subject: [PATCH 30/41] Create README.md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 000000000..19e44df07 --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ + + +
+

Dokploy

+
+ +
+Reflex Logo +
+
+ + + +Dokploy is a free self-hostable Platform as a Service (PaaS) that simplifies the deployment and management of applications and databases using Docker and Traefik. Designed to enhance efficiency and security, Dokploy allows you to deploy your applications on any VPS. + + + +## 🌟 Features + +- **Applications**: Deploy any type of application (Node.js, PHP, Python, Go, Ruby, etc.) with ease. +- **Databases**: Create and manage databases with support for MySQL, PostgreSQL, MongoDB, MariaDB, Redis, and more. +- **Docker Management**: Easily deploy and manage Docker containers. +- **Traefik Integration**: Automatically integrates with Traefik for routing and load balancing. +- **Real-time Monitoring**: Monitor CPU, memory, storage, and network usage. +- **Database Backups**: Automate backups with support for multiple storage destinations. + + +## 🚀 Getting Started + +To get started run the following command in a VPS: + + +```bash +curl -sSL https://dokploy.com/install.sh | sh +``` + +Tested Systems: + +- Ubuntu 20.04 +- Debian 11 + +## 📄 Documentation + +For detailed documentation, visit [docs.dokploy.com/docs](https://docs.dokploy.com). + From e8d50f3c29d7ed13ad40914cb54afb22a5e62e87 Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sun, 12 May 2024 09:55:11 +0800 Subject: [PATCH 31/41] Update README.md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 19e44df07..a1c4708a9 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,12 @@ Dokploy is a free self-hostable Platform as a Service (PaaS) that simplifies the +## Explanation +[English](README.md) | [中文](README-zh.md) + + + + ## 🌟 Features - **Applications**: Deploy any type of application (Node.js, PHP, Python, Go, Ruby, etc.) with ease. From 0d41e7d0ef25f1df55523505084cf7fcb6fc40aa Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sun, 12 May 2024 09:56:40 +0800 Subject: [PATCH 32/41] Update README-zh.md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README-zh.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/README-zh.md b/README-zh.md index c10b38b51..5331065be 100644 --- a/README-zh.md +++ b/README-zh.md @@ -14,12 +14,8 @@ Dokploy 是一个免费的自托管平台即服务 (PaaS),它使用 Docker 和 Traefik 简化了应用程序和数据库的部署和管理。 Dokploy 旨在提高效率和安全性,允许您在任何 VPS 上部署应用程序。 ## 语言 -**English**: - -[github.com/Dokploy/dokploy/blob/canary/README.md] -(https://github.com/Dokploy/dokploy/blob/canary/README.md) - -**Chinese**:[github.com/fxazkwxm/dokploy/blob/canary/README-zh.md](https://github.com/fxazkwxm/dokploy/blob/canary/README-zh.md) +[English](README.md) +[中文](README-zh.md) From 704d682e3da0790b4fe62f30f102de291e563201 Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sun, 12 May 2024 09:57:08 +0800 Subject: [PATCH 33/41] Update README-zh.md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README-zh.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README-zh.md b/README-zh.md index 5331065be..8b291f369 100644 --- a/README-zh.md +++ b/README-zh.md @@ -15,6 +15,7 @@ Dokploy 是一个免费的自托管平台即服务 (PaaS),它使用 Docker 和 ## 语言 [English](README.md) + [中文](README-zh.md) From c1f48578f04f074cfea0a8b71e7329a7fb1cb2c3 Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sun, 12 May 2024 10:00:57 +0800 Subject: [PATCH 34/41] Update README-zh.md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README-zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-zh.md b/README-zh.md index 8b291f369..7b9522b63 100644 --- a/README-zh.md +++ b/README-zh.md @@ -40,7 +40,7 @@ curl -sSL https://dokploy.com/install.sh | sh - Ubuntu 20.04 - Debian 11 -- + ## 📄 文档 如需查看详细的文档资料,请访问[docs.dokploy.com/docs](https://docs.dokploy.com). From 1ac69fb81c4155ca9989ba4bba5f7edbe22764a2 Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sun, 12 May 2024 10:04:15 +0800 Subject: [PATCH 35/41] Update README-zh.md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README-zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-zh.md b/README-zh.md index 7b9522b63..60d91f97e 100644 --- a/README-zh.md +++ b/README-zh.md @@ -43,4 +43,4 @@ curl -sSL https://dokploy.com/install.sh | sh ## 📄 文档 -如需查看详细的文档资料,请访问[docs.dokploy.com/docs](https://docs.dokploy.com). +如需查看详细的文档资料 请访问[docs.dokploy.com/docs](https://docs.dokploy.com) From ff1cb7d6aeaf0cda503309723008d8d1d627f8ab Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sun, 12 May 2024 10:07:09 +0800 Subject: [PATCH 36/41] Update README-zh.md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README-zh.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README-zh.md b/README-zh.md index 60d91f97e..2f0c25a0c 100644 --- a/README-zh.md +++ b/README-zh.md @@ -23,8 +23,11 @@ Dokploy 是一个免费的自托管平台即服务 (PaaS),它使用 Docker 和 ## 🌟 功能 + **应用程序**: 轻松部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby 等)。-数据库: 创建和管理数据库,支持 MySQL、PostgreSQL、MongoDB、MariaDB、Redis 等。 + -**Docker 管理**: 轻松部署和管理 Docker 容器。 + -**Traefik 集成**: 自动与 Traefik 集成,用于路由和负载均衡。 实时监控: 监控 CPU、内存、存储和网络使用情况。 数据库备份: 支持多种存储目的地自动备份。 From 45de9a879dde5c299a40cc079ed1dcdf2a1968a2 Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sun, 12 May 2024 10:09:35 +0800 Subject: [PATCH 37/41] Update README-zh.md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README-zh.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README-zh.md b/README-zh.md index 2f0c25a0c..2f5c30c1e 100644 --- a/README-zh.md +++ b/README-zh.md @@ -24,11 +24,9 @@ Dokploy 是一个免费的自托管平台即服务 (PaaS),它使用 Docker 和 ## 🌟 功能 -**应用程序**: 轻松部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby 等)。-数据库: 创建和管理数据库,支持 MySQL、PostgreSQL、MongoDB、MariaDB、Redis 等。 - --**Docker 管理**: 轻松部署和管理 Docker 容器。 - --**Traefik 集成**: 自动与 Traefik 集成,用于路由和负载均衡。 +- **应用程序**: 轻松部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby 等)。-数据库: 创建和管理数据库,支持 MySQL、PostgreSQL、MongoDB、MariaDB、Redis 等。 +- **Docker 管理**: 轻松部署和管理 Docker 容器。 +- **Traefik 集成**: 自动与 Traefik 集成,用于路由和负载均衡。 实时监控: 监控 CPU、内存、存储和网络使用情况。 数据库备份: 支持多种存储目的地自动备份。 From ddc3274f385725ee3d60e39ef1e09778458ddb9f Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sun, 12 May 2024 10:17:14 +0800 Subject: [PATCH 38/41] Update README-zh.md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README-zh.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-zh.md b/README-zh.md index 2f5c30c1e..ce2fa87f2 100644 --- a/README-zh.md +++ b/README-zh.md @@ -27,8 +27,8 @@ Dokploy 是一个免费的自托管平台即服务 (PaaS),它使用 Docker 和 - **应用程序**: 轻松部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby 等)。-数据库: 创建和管理数据库,支持 MySQL、PostgreSQL、MongoDB、MariaDB、Redis 等。 - **Docker 管理**: 轻松部署和管理 Docker 容器。 - **Traefik 集成**: 自动与 Traefik 集成,用于路由和负载均衡。 -实时监控: 监控 CPU、内存、存储和网络使用情况。 -数据库备份: 支持多种存储目的地自动备份。 +- **实时监控**: 监控 CPU,内存,存储和网络使用情况。 +- **数据库备份**: 支持多种存储目的地自动备份。 ## 🚀 入门 要开始使用 请在VPS 上运行以下命令: From c7e3b10eb37cf596a86f2fd684384c73a6bbc5b4 Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sun, 12 May 2024 10:21:20 +0800 Subject: [PATCH 39/41] Update README-zh.md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README-zh.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-zh.md b/README-zh.md index ce2fa87f2..05675f011 100644 --- a/README-zh.md +++ b/README-zh.md @@ -27,8 +27,8 @@ Dokploy 是一个免费的自托管平台即服务 (PaaS),它使用 Docker 和 - **应用程序**: 轻松部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby 等)。-数据库: 创建和管理数据库,支持 MySQL、PostgreSQL、MongoDB、MariaDB、Redis 等。 - **Docker 管理**: 轻松部署和管理 Docker 容器。 - **Traefik 集成**: 自动与 Traefik 集成,用于路由和负载均衡。 -- **实时监控**: 监控 CPU,内存,存储和网络使用情况。 -- **数据库备份**: 支持多种存储目的地自动备份。 +- **实时监控**: 监控 CPU,内存,存储和网络使用情况。 +- **数据库备份**: 支持多种存储目的地自动备份。 ## 🚀 入门 要开始使用 请在VPS 上运行以下命令: From 26e1d65c36e5f2c1eac818931da8faae2848f506 Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sun, 12 May 2024 10:23:28 +0800 Subject: [PATCH 40/41] Update README-zh.md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README-zh.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-zh.md b/README-zh.md index 05675f011..ce2fa87f2 100644 --- a/README-zh.md +++ b/README-zh.md @@ -27,8 +27,8 @@ Dokploy 是一个免费的自托管平台即服务 (PaaS),它使用 Docker 和 - **应用程序**: 轻松部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby 等)。-数据库: 创建和管理数据库,支持 MySQL、PostgreSQL、MongoDB、MariaDB、Redis 等。 - **Docker 管理**: 轻松部署和管理 Docker 容器。 - **Traefik 集成**: 自动与 Traefik 集成,用于路由和负载均衡。 -- **实时监控**: 监控 CPU,内存,存储和网络使用情况。 -- **数据库备份**: 支持多种存储目的地自动备份。 +- **实时监控**: 监控 CPU,内存,存储和网络使用情况。 +- **数据库备份**: 支持多种存储目的地自动备份。 ## 🚀 入门 要开始使用 请在VPS 上运行以下命令: From 428156579ddb88bccf9a33931d6ec7c10367fbe6 Mon Sep 17 00:00:00 2001 From: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> Date: Sun, 12 May 2024 10:26:29 +0800 Subject: [PATCH 41/41] Update README-zh.md Signed-off-by: AndroidEnthusiast <85106891+kwxmxb@users.noreply.github.com> --- README-zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-zh.md b/README-zh.md index ce2fa87f2..0e4982e08 100644 --- a/README-zh.md +++ b/README-zh.md @@ -24,7 +24,7 @@ Dokploy 是一个免费的自托管平台即服务 (PaaS),它使用 Docker 和 ## 🌟 功能 -- **应用程序**: 轻松部署任何类型的应用程序(Node.js、PHP、Python、Go、Ruby 等)。-数据库: 创建和管理数据库,支持 MySQL、PostgreSQL、MongoDB、MariaDB、Redis 等。 +- **应用程序**: 轻松部署任何类型的应用程序(Node.js,PHP,Python,Go、Ruby 等)。数据库: 创建和管理数据库,支持 MySQL,PostgreSQL,MongoDB、MariaDB、Redis 等。 - **Docker 管理**: 轻松部署和管理 Docker 容器。 - **Traefik 集成**: 自动与 Traefik 集成,用于路由和负载均衡。 - **实时监控**: 监控 CPU,内存,存储和网络使用情况。