Update fc-landing: public-safe page, no LAN refs, bare-metal RKE2 footer

This commit is contained in:
2026-03-11 00:38:50 +00:00
parent 848eb83f83
commit 5f30f85569

View File

@@ -1,8 +1,7 @@
# FlowerCore Landing Page
# Blue Jay Lab branded landing page
# Blue Jay Lab branded landing page - PUBLIC facing
# ArgoCD managed - BlueJay Lab
---
# fc-system namespace is shared; don't overwrite if it exists
apiVersion: v1
kind: Namespace
metadata:
@@ -10,7 +9,7 @@ metadata:
labels:
app.kubernetes.io/part-of: bluejay-infra
---
# Landing page HTML
# Landing page HTML (public-safe - no internal LAN references)
apiVersion: v1
kind: ConfigMap
metadata:
@@ -23,7 +22,7 @@ data:
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>FlowerCore - Blue Jay Lab</title>
<title>FlowerCore</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
@@ -58,7 +57,14 @@ data:
font-size: 1.3rem;
color: #7ab3ff;
font-weight: 300;
margin-bottom: 1rem;
}
.description {
font-size: 1rem;
color: #8aa8c4;
line-height: 1.6;
margin-bottom: 3rem;
max-width: 600px;
}
.services {
display: grid;
@@ -84,11 +90,25 @@ data:
}
.service h3 { color: #4a9eff; font-size: 0.95rem; margin-bottom: 0.3rem; }
.service p { color: #8aa8c4; font-size: 0.8rem; }
.status-bar {
display: flex;
gap: 2rem;
margin-top: 2rem;
padding: 1rem 2rem;
background: rgba(74, 158, 255, 0.05);
border-radius: 8px;
border: 1px solid rgba(74, 158, 255, 0.1);
}
.status-item { text-align: center; }
.status-item .value { color: #4a9eff; font-size: 1.5rem; font-weight: 700; }
.status-item .label { color: #6a8ca4; font-size: 0.7rem; text-transform: uppercase; letter-spacing: 1px; }
.footer {
margin-top: 3rem;
color: #4a6580;
font-size: 0.8rem;
}
.footer a { color: #4a6580; text-decoration: none; }
.footer a:hover { color: #7ab3ff; }
</style>
</head>
<body>
@@ -96,42 +116,48 @@ data:
<div class="logo">&#x1F33B;</div>
<h1>FlowerCore</h1>
<p class="subtitle">Blue Jay Lab</p>
<p class="description">
Multi-tenant service management platform built on .NET 10,
Kubernetes, and GitOps. Digital signage, telephony IVR,
MySQL/PHP hosting, and infrastructure automation.
</p>
</div>
<div class="services">
<a class="service" href="https://gitea.iamworkin.lan">
<h3>Gitea</h3>
<p>Git repositories</p>
<a class="service" href="https://gitea.flowercore.io">
<h3>Source</h3>
<p>Gitea repositories</p>
</a>
<a class="service" href="https://argocd.iamworkin.lan">
<h3>ArgoCD</h3>
<p>GitOps deployments</p>
</a>
<a class="service" href="https://zabbix.iamworkin.lan">
<h3>Zabbix</h3>
<p>Monitoring</p>
</a>
<a class="service" href="https://guac.iamworkin.lan">
<h3>Guacamole</h3>
<p>Remote desktop</p>
</a>
<a class="service" href="https://element.iamworkin.lan">
<h3>Element</h3>
<p>Matrix chat</p>
</a>
<a class="service" href="https://mail.iamworkin.lan">
<a class="service" href="https://webmail.flowercore.io">
<h3>Mail</h3>
<p>Snappymail webmail</p>
<p>Webmail access</p>
</a>
<a class="service" href="https://intranet.iamworkin.lan">
<h3>Intranet</h3>
<p>Lab portal</p>
<a class="service" href="https://element.flowercore.io">
<h3>Chat</h3>
<p>Matrix messaging</p>
</a>
<a class="service" href="https://pki.iamworkin.lan">
<h3>PKI</h3>
<p>Certificates</p>
<a class="service" href="https://github.com/FlowerCoreIO">
<h3>GitHub</h3>
<p>Open source</p>
</a>
</div>
<p class="footer">FlowerCore &middot; RKE2 on Harvester &middot; ArgoCD managed</p>
<div class="status-bar">
<div class="status-item">
<div class="value">17</div>
<div class="label">Services</div>
</div>
<div class="status-item">
<div class="value">13</div>
<div class="label">VLANs</div>
</div>
<div class="status-item">
<div class="value">12k+</div>
<div class="label">Tests</div>
</div>
</div>
<p class="footer">
FlowerCore &middot; Bare-metal RKE2 &middot; ArgoCD managed
&middot; <a href="mailto:admin@flowercore.io">Contact</a>
</p>
</body>
</html>
---
@@ -230,7 +256,7 @@ spec:
targetPort: 80
name: http
---
# Traefik IngressRoute (internal only, no public cert needed)
# Internal IngressRoute (LAN access)
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
@@ -246,3 +272,49 @@ spec:
- name: fc-landing
port: 80
tls: {}
---
# Public IngressRoute (flowercore.io with Cloudflare origin cert)
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: fc-landing-public
namespace: fc-system
spec:
entryPoints:
- websecure
routes:
- match: Host(`flowercore.io`) || Host(`www.flowercore.io`)
kind: Rule
services:
- name: fc-landing
port: 80
tls:
secretName: cf-origin-flowercore-io
---
# HTTP to HTTPS redirect for public domain
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: fc-landing-public-http
namespace: fc-system
spec:
entryPoints:
- web
routes:
- match: Host(`flowercore.io`) || Host(`www.flowercore.io`)
kind: Rule
services:
- name: fc-landing
port: 80
middlewares:
- name: redirect-https
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: redirect-https
namespace: fc-system
spec:
redirectScheme:
scheme: https
permanent: true