AppRunner: Support Nodejs 24.0.2

Change-Id: I37659d91d8211d5cfb4240a885da5a51ef43774a
diff --git a/apps/app-runner/Dockerfile.nodejs.24.0.2 b/apps/app-runner/Dockerfile.nodejs.24.0.2
new file mode 100644
index 0000000..0c0397c
--- /dev/null
+++ b/apps/app-runner/Dockerfile.nodejs.24.0.2
@@ -0,0 +1,8 @@
+FROM library/node:24.0.2-alpine3.20
+
+ARG TARGETARCH
+
+RUN apk update
+RUN apk add gcc g++ make musl-dev python3 py3-setuptools
+
+COPY app-runner_${TARGETARCH} /usr/bin/app-runner
diff --git a/apps/app-runner/Makefile b/apps/app-runner/Makefile
index eeffb68..86ec333 100644
--- a/apps/app-runner/Makefile
+++ b/apps/app-runner/Makefile
@@ -10,6 +10,7 @@
 manifest_dest_nextjs_deno_2_0_0=docker://docker.io/$(repo_name)/app-runner:nextjs-deno-2.0.0
 manifest_dest_deno_2_2_0=docker://docker.io/$(repo_name)/app-runner:deno-2.2.0
 manifest_dest_nodejs_23_1_0=docker://docker.io/$(repo_name)/app-runner:nodejs-23.1.0
+manifest_dest_nodejs_24_0_2=docker://docker.io/$(repo_name)/app-runner:nodejs-24.0.2
 endif
 
 clean:
@@ -119,7 +120,7 @@
 	$(podman) manifest push $(repo_name)/app-runner:nextjs-deno-2.0.0 $(manifest_dest_nextjs_deno_2_0_0)
 	$(podman) manifest rm $(repo_name)/app-runner:nextjs-deno-2.0.0
 
-# Nextjs
+# Nodejs
 
 push_nodejs_23_1_0_arm64: clean build_arm64
 	$(podman) build --platform linux/arm64 --tag=$(repo_name)/app-runner:nodejs-23.1.0-arm64 -f Dockerfile.nodejs.23.1.0 $(docker_flags) .
@@ -133,6 +134,18 @@
 	$(podman) manifest create $(repo_name)/app-runner:nodejs-23.1.0 $(repo_name)/app-runner:nodejs-23.1.0-arm64 $(repo_name)/app-runner:nodejs-23.1.0-amd64
 	$(podman) manifest push --purge $(repo_name)/app-runner:nodejs-23.1.0 $(manifest_dest_nodejs_23_1_0)
 
+push_nodejs_24_0_2_arm64: clean build_arm64
+	$(podman) build --platform linux/arm64 --tag=$(repo_name)/app-runner:nodejs-24.0.2-arm64 -f Dockerfile.nodejs.24.0.2 $(docker_flags) .
+	$(podman) push $(repo_name)/app-runner:nodejs-24.0.2-arm64
+
+push_nodejs_24_0_2_amd64: clean build_amd64
+	$(podman) build --platform linux/amd64 --tag=$(repo_name)/app-runner:nodejs-24.0.2-amd64 -f Dockerfile.nodejs.24.0.2 $(docker_flags) .
+	$(podman) push $(repo_name)/app-runner:nodejs-24.0.2-amd64
+
+push_nodejs_24_0_2: push_nodejs_24_0_2_arm64 push_nodejs_24_0_2_amd64
+	$(podman) manifest create $(repo_name)/app-runner:nodejs-24.0.2 $(repo_name)/app-runner:nodejs-24.0.2-arm64 $(repo_name)/app-runner:nodejs-24.0.2-amd64
+	$(podman) manifest push --purge $(repo_name)/app-runner:nodejs-24.0.2 $(manifest_dest_nodejs_24_0_2)
+
 # Deno
 
 push_deno_2_2_0_arm64: clean build_arm64
@@ -150,4 +163,4 @@
 
 
 # all
-push: push_golang_1_22_0 push_golang_1_20_0 push_hugo push_php_8_2_apache push_nextjs_deno_2_0_0 push_nodejs_23_1_0 push_deno_2_2_0
+push: push_golang_1_22_0 push_golang_1_20_0 push_hugo push_php_8_2_apache push_nextjs_deno_2_0_0 push_nodejs_23_1_0 push_nodejs_24_0_2 push_deno_2_2_0
diff --git a/apps/app-runner/server.go b/apps/app-runner/server.go
index ef14842..83bcac4 100644
--- a/apps/app-runner/server.go
+++ b/apps/app-runner/server.go
@@ -60,7 +60,9 @@
 	http.HandleFunc("/update", s.handleUpdate)
 	http.HandleFunc("/ready", s.handleReady)
 	http.HandleFunc("/logs", s.handleLogs)
-	go s.pingManager()
+	if s.managerAddr != "" && s.appId != "" {
+		go s.pingManager()
+	}
 	if err := s.run(); err != nil {
 		return err
 	}
diff --git a/charts/app-runner/Chart.yaml b/charts/app-runner/Chart.yaml
index b1bad90..0edd283 100644
--- a/charts/app-runner/Chart.yaml
+++ b/charts/app-runner/Chart.yaml
@@ -2,5 +2,5 @@
 name: app-runner
 description: A Helm chart for PCloud App Runner
 type: application
-version: 0.0.1
-appVersion: "0.0.1"
+version: 0.0.4
+appVersion: "0.0.4"
diff --git a/charts/app-runner/templates/install.yaml b/charts/app-runner/templates/install.yaml
index 3279d4b..8a1a8c7 100644
--- a/charts/app-runner/templates/install.yaml
+++ b/charts/app-runner/templates/install.yaml
@@ -49,7 +49,7 @@
   ports:
   - name: api
     port: 80
-    targetPort: api
+    targetPort: dodo-api
     protocol: TCP
 ---
 apiVersion: apps/v1
@@ -91,7 +91,7 @@
         image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
         imagePullPolicy: {{ .Values.image.pullPolicy }}
         ports:
-        - name: api
+        - name: dodo-api
           containerPort: {{ .Values.apiPort }}
           protocol: TCP
         {{- if .Values.appPorts }}
diff --git a/core/installer/app_configs/dodo_app.cue b/core/installer/app_configs/dodo_app.cue
index 2966704..33dbb82 100644
--- a/core/installer/app_configs/dodo_app.cue
+++ b/core/installer/app_configs/dodo_app.cue
@@ -456,7 +456,11 @@
 	type: "nodejs:23.1.0"
 }
 
-#NodeJSApp: #NodeJS2310
+#NodeJS2402: #NodeJSAppTmpl & {
+	type: "nodejs:24.0.2"
+}
+
+#NodeJSApp: #NodeJS2310 | #NodeJS2402
 
 #App: #GoApp | #HugoApp | #PHPApp | #NextjsApp | #NodeJSApp | #DenoApp
 
diff --git a/core/installer/samples/canvas.rest b/core/installer/samples/canvas.rest
index 7454e5e..d2a0c8c 100644
--- a/core/installer/samples/canvas.rest
+++ b/core/installer/samples/canvas.rest
@@ -37,14 +37,12 @@
           "repository": "https://code.v1.dodo.cloud/pcloud",
           "rootDir": "apps/canvas/back"
         },
-        "type": "nodejs:23.1.0",
+        "type": "nodejs:24.0.2",
 		"volume": ["data"],
 		"preBuildCommands": [{
 		  "bin": "cd ../front && npm install && npm run build"
 		}, {
-		  "bin": "npx prisma deploy"
-		}, {
-		  "bin": "npx prisma generate"
+		  "bin": "npx prisma migrate dev"
 		}]
       }
     ],