appmanager-api: render, install
diff --git a/core/installer/values-tmpl/core-auth.jsonschema b/core/installer/values-tmpl/core-auth.jsonschema
new file mode 100644
index 0000000..ec6a2c5
--- /dev/null
+++ b/core/installer/values-tmpl/core-auth.jsonschema
@@ -0,0 +1,15 @@
+{
+  "type": "object",
+  "properties": {
+    "Values": {
+      "type": "object",
+      "properties": {
+        "NamespacePrefix": { "type": "string" },
+        "Id": { "type": "string" },
+        "Domain": { "type": "string" }
+      },
+      "additionalProperties": false
+    }
+  },
+  "additionalProperties": false
+}
diff --git a/core/installer/values-tmpl/headscale.jsonschema b/core/installer/values-tmpl/headscale.jsonschema
new file mode 100644
index 0000000..ec6a2c5
--- /dev/null
+++ b/core/installer/values-tmpl/headscale.jsonschema
@@ -0,0 +1,15 @@
+{
+  "type": "object",
+  "properties": {
+    "Values": {
+      "type": "object",
+      "properties": {
+        "NamespacePrefix": { "type": "string" },
+        "Id": { "type": "string" },
+        "Domain": { "type": "string" }
+      },
+      "additionalProperties": false
+    }
+  },
+  "additionalProperties": false
+}
diff --git a/core/installer/values-tmpl/ingress-private.jsonschema b/core/installer/values-tmpl/ingress-private.jsonschema
new file mode 100644
index 0000000..ec6a2c5
--- /dev/null
+++ b/core/installer/values-tmpl/ingress-private.jsonschema
@@ -0,0 +1,15 @@
+{
+  "type": "object",
+  "properties": {
+    "Values": {
+      "type": "object",
+      "properties": {
+        "NamespacePrefix": { "type": "string" },
+        "Id": { "type": "string" },
+        "Domain": { "type": "string" }
+      },
+      "additionalProperties": false
+    }
+  },
+  "additionalProperties": false
+}
diff --git a/core/installer/values-tmpl/ingress-public.jsonschema b/core/installer/values-tmpl/ingress-public.jsonschema
new file mode 100644
index 0000000..ec6a2c5
--- /dev/null
+++ b/core/installer/values-tmpl/ingress-public.jsonschema
@@ -0,0 +1,15 @@
+{
+  "type": "object",
+  "properties": {
+    "Values": {
+      "type": "object",
+      "properties": {
+        "NamespacePrefix": { "type": "string" },
+        "Id": { "type": "string" },
+        "Domain": { "type": "string" }
+      },
+      "additionalProperties": false
+    }
+  },
+  "additionalProperties": false
+}
diff --git a/core/installer/values-tmpl/jellyfin.jsonschema b/core/installer/values-tmpl/jellyfin.jsonschema
new file mode 100644
index 0000000..ec6a2c5
--- /dev/null
+++ b/core/installer/values-tmpl/jellyfin.jsonschema
@@ -0,0 +1,15 @@
+{
+  "type": "object",
+  "properties": {
+    "Values": {
+      "type": "object",
+      "properties": {
+        "NamespacePrefix": { "type": "string" },
+        "Id": { "type": "string" },
+        "Domain": { "type": "string" }
+      },
+      "additionalProperties": false
+    }
+  },
+  "additionalProperties": false
+}
diff --git a/core/installer/values-tmpl/maddy.jsonschema b/core/installer/values-tmpl/maddy.jsonschema
new file mode 100644
index 0000000..ec6a2c5
--- /dev/null
+++ b/core/installer/values-tmpl/maddy.jsonschema
@@ -0,0 +1,15 @@
+{
+  "type": "object",
+  "properties": {
+    "Values": {
+      "type": "object",
+      "properties": {
+        "NamespacePrefix": { "type": "string" },
+        "Id": { "type": "string" },
+        "Domain": { "type": "string" }
+      },
+      "additionalProperties": false
+    }
+  },
+  "additionalProperties": false
+}
diff --git a/core/installer/values-tmpl/matrix.jsonschema b/core/installer/values-tmpl/matrix.jsonschema
new file mode 100644
index 0000000..ec6a2c5
--- /dev/null
+++ b/core/installer/values-tmpl/matrix.jsonschema
@@ -0,0 +1,15 @@
+{
+  "type": "object",
+  "properties": {
+    "Values": {
+      "type": "object",
+      "properties": {
+        "NamespacePrefix": { "type": "string" },
+        "Id": { "type": "string" },
+        "Domain": { "type": "string" }
+      },
+      "additionalProperties": false
+    }
+  },
+  "additionalProperties": false
+}
diff --git a/core/installer/values-tmpl/pihole.jsonschema b/core/installer/values-tmpl/pihole.jsonschema
new file mode 100644
index 0000000..ec6a2c5
--- /dev/null
+++ b/core/installer/values-tmpl/pihole.jsonschema
@@ -0,0 +1,15 @@
+{
+  "type": "object",
+  "properties": {
+    "Values": {
+      "type": "object",
+      "properties": {
+        "NamespacePrefix": { "type": "string" },
+        "Id": { "type": "string" },
+        "Domain": { "type": "string" }
+      },
+      "additionalProperties": false
+    }
+  },
+  "additionalProperties": false
+}
diff --git a/core/installer/values-tmpl/qbittorrent.jsonschema b/core/installer/values-tmpl/qbittorrent.jsonschema
new file mode 100644
index 0000000..ec6a2c5
--- /dev/null
+++ b/core/installer/values-tmpl/qbittorrent.jsonschema
@@ -0,0 +1,15 @@
+{
+  "type": "object",
+  "properties": {
+    "Values": {
+      "type": "object",
+      "properties": {
+        "NamespacePrefix": { "type": "string" },
+        "Id": { "type": "string" },
+        "Domain": { "type": "string" }
+      },
+      "additionalProperties": false
+    }
+  },
+  "additionalProperties": false
+}
diff --git a/core/installer/values-tmpl/rpuppy.jsonschema b/core/installer/values-tmpl/rpuppy.jsonschema
new file mode 100644
index 0000000..36619aa
--- /dev/null
+++ b/core/installer/values-tmpl/rpuppy.jsonschema
@@ -0,0 +1,7 @@
+{
+  "type": "object",
+  "properties": {
+    "Subdomain": { "type": "string", "default": "woof" }
+  },
+  "additionalProperties": false
+}
diff --git a/core/installer/values-tmpl/rpuppy.md b/core/installer/values-tmpl/rpuppy.md
new file mode 100644
index 0000000..a7d4177
--- /dev/null
+++ b/core/installer/values-tmpl/rpuppy.md
@@ -0,0 +1 @@
+rpuppy application will be installed on public network and be accessible to any user on https://{{ .Values.Subdomain }}.{{ .Global.Domain }}
diff --git a/core/installer/values-tmpl/rpuppy.yaml b/core/installer/values-tmpl/rpuppy.yaml
index 05298b8..e6014a3 100644
--- a/core/installer/values-tmpl/rpuppy.yaml
+++ b/core/installer/values-tmpl/rpuppy.yaml
@@ -2,7 +2,7 @@
 kind: HelmRelease
 metadata:
   name: rpuppy
-  namespace: {{ .Values.NamespacePrefix }}app-rpuppy
+  namespace: {{ .Global.NamespacePrefix }}app-rpuppy
 spec:
   chart:
     spec:
@@ -10,9 +10,9 @@
       sourceRef:
         kind: GitRepository
         name: pcloud
-        namespace: {{ .Values.Id }}
+        namespace: {{ .Global.Id }}
   interval: 1m0s
   values:
     ingressClassName: pcloud-ingress-public
-    certificateIssuer: lekva-public
-    domain: woof.{{ .Values.Domain }}
+    certificateIssuer: {{ .Global.Id }}-public
+    domain: {{ .Values.Subdomain }}.{{ .Global.Domain }}
diff --git a/core/installer/values-tmpl/vaultwarden.jsonschema b/core/installer/values-tmpl/vaultwarden.jsonschema
new file mode 100644
index 0000000..ec6a2c5
--- /dev/null
+++ b/core/installer/values-tmpl/vaultwarden.jsonschema
@@ -0,0 +1,15 @@
+{
+  "type": "object",
+  "properties": {
+    "Values": {
+      "type": "object",
+      "properties": {
+        "NamespacePrefix": { "type": "string" },
+        "Id": { "type": "string" },
+        "Domain": { "type": "string" }
+      },
+      "additionalProperties": false
+    }
+  },
+  "additionalProperties": false
+}