installer: welcome
diff --git a/core/installer/app.go b/core/installer/app.go
index 96caf68..2b94770 100644
--- a/core/installer/app.go
+++ b/core/installer/app.go
@@ -54,6 +54,8 @@
 	}
 	return []App{
 		CreateAppIngressPrivate(valuesTmpls, tmpls),
+		CreateCertificateIssuerPublic(valuesTmpls, tmpls),
+		CreateCertificateIssuerPrivate(valuesTmpls, tmpls),
 		CreateAppCoreAuth(valuesTmpls, tmpls),
 		CreateAppVaultwarden(valuesTmpls, tmpls),
 		CreateAppMatrix(valuesTmpls, tmpls),
@@ -66,6 +68,7 @@
 		CreateAppTailscaleProxy(valuesTmpls, tmpls),
 		CreateMetallbConfigEnv(valuesTmpls, tmpls),
 		CreateEnvManager(valuesTmpls, tmpls),
+		CreateWelcome(valuesTmpls, tmpls),
 		CreateIngressPublic(valuesTmpls, tmpls),
 		CreateCertManager(valuesTmpls, tmpls),
 		CreateCertManagerWebhookGandi(valuesTmpls, tmpls),
@@ -85,9 +88,7 @@
 	return App{
 		"ingress-private",
 		[]*template.Template{
-			// tmpls.Lookup("vpn-mesh-config.yaml"),
 			tmpls.Lookup("ingress-private.yaml"),
-			tmpls.Lookup("certificate-issuer.yaml"),
 		},
 		string(schema),
 		tmpls.Lookup("ingress-private.md"),
@@ -100,7 +101,7 @@
 		panic(err)
 	}
 	return App{
-		"ingress-private",
+		"certificate-issuer-private",
 		[]*template.Template{
 			tmpls.Lookup("certificate-issuer-private.yaml"),
 		},
@@ -109,6 +110,21 @@
 	}
 }
 
+func CreateCertificateIssuerPublic(fs embed.FS, tmpls *template.Template) App {
+	schema, err := fs.ReadFile("values-tmpl/certificate-issuer-public.jsonschema")
+	if err != nil {
+		panic(err)
+	}
+	return App{
+		"certificate-issuer-public",
+		[]*template.Template{
+			tmpls.Lookup("certificate-issuer-public.yaml"),
+		},
+		string(schema),
+		tmpls.Lookup("certificate-issuer-public.md"),
+	}
+}
+
 func CreateAppCoreAuth(fs embed.FS, tmpls *template.Template) App {
 	schema, err := fs.ReadFile("values-tmpl/core-auth.jsonschema")
 	if err != nil {
@@ -291,6 +307,21 @@
 	}
 }
 
+func CreateWelcome(fs embed.FS, tmpls *template.Template) App {
+	schema, err := fs.ReadFile("values-tmpl/welcome.jsonschema")
+	if err != nil {
+		panic(err)
+	}
+	return App{
+		"welcome",
+		[]*template.Template{
+			tmpls.Lookup("welcome.yaml"),
+		},
+		string(schema),
+		tmpls.Lookup("welcome.md"),
+	}
+}
+
 func CreateIngressPublic(fs embed.FS, tmpls *template.Template) App {
 	schema, err := fs.ReadFile("values-tmpl/ingress-public.jsonschema")
 	if err != nil {