From 2e169b50fedc3885fca652ecc70b31e0d3c458b1 Mon Sep 17 00:00:00 2001 From: Neo Date: Sun, 26 Apr 2026 11:48:28 +0000 Subject: [PATCH] feat: initial lab portal Static nginx page serving home.lab.corestory.ai. Lists all internal lab services with links and descriptions. --- README.md | 43 +++++++- index.html | 286 +++++++++++++++++++++++++++++++++++++++++++++++++++++ nginx.conf | 45 +++++++++ 3 files changed, 372 insertions(+), 2 deletions(-) create mode 100644 index.html create mode 100644 nginx.conf diff --git a/README.md b/README.md index 4f2f092..386a122 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,42 @@ -# lab-portal +# corestory Lab Portal -corestory Lab internal services portal — home.lab.corestory.ai \ No newline at end of file +Internal services portal at [home.lab.corestory.ai](https://home.lab.corestory.ai). + +## What it is + +A static nginx page listing all internal lab services with links. Served by the `lab-portal` Docker container on the `plane-app_default` network (IP `172.18.0.14:80`), routed through Traefik via `home.lab.corestory.ai`. + +## Deployment + +The container is managed outside Nomad (Docker Compose / manual `docker run`). The Traefik route is defined in the Nomad `traefik` job template (`local/home.yml`). + +To update the portal page: +```bash +# Edit index.html, then: +docker cp index.html lab-portal:/usr/share/nginx/html/index.html +``` + +To rebuild from scratch: +```bash +docker run -d --name lab-portal \ + --network plane-app_default \ + -v /path/to/index.html:/usr/share/nginx/html/index.html:ro \ + nginx:alpine +``` + +## Services Listed + +| Service | URL | +|---------|-----| +| Plane | https://plane.lab.corestory.ai | +| n8n | https://n8n.lab.corestory.ai | +| Ghost CMS | https://cms.lab.corestory.ai | +| Matrix | https://matrix.lab.corestory.ai | +| Metabase | https://metabase.lab.corestory.ai | +| PostHog | https://posthog.lab.corestory.ai | +| dbt | https://dbt.lab.corestory.ai | +| Gitea | https://git.lab.corestory.ai | +| Grafana | https://grafana.lab.corestory.ai | +| Keycloak | https://keycloak.lab.corestory.ai | +| Traefik | https://traefik.lab.corestory.ai | +| PKI / OpenBao | https://pki.lab.corestory.ai | diff --git a/index.html b/index.html new file mode 100644 index 0000000..9b512ee --- /dev/null +++ b/index.html @@ -0,0 +1,286 @@ + + + + + + corestory Lab + + + + +
+

corestory Lab

+

Internal Services Portal

+
+ +
+ + + + + +
✈️
+
+
Plane
+
Project management
+
plane.lab.corestory.ai
+
+ +
+ + +
+
+
n8n
+
Workflow automation
+
n8n.lab.corestory.ai
+
+ +
+ + +
👻
+
+
Ghost CMS
+
Content management
+
cms.lab.corestory.ai
+
+ +
+ + + + + +
💬
+
+
Matrix
+
Bard team chat (Element)
+
matrix.lab.corestory.ai
+
+ +
+ + + + + +
📊
+
+
Metabase
+
Business intelligence
+
metabase.lab.corestory.ai
+
+ +
+ + +
🦔
+
+
PostHog
+
Product analytics
+
posthog.lab.corestory.ai
+
+ +
+ + +
🔄
+
+
dbt
+
Data transformation
+
dbt.lab.corestory.ai
+
+ +
+ + + + + +
🐙
+
+
Gitea
+
Git hosting
+
git.lab.corestory.ai
+
+ +
+ + + + + +
📈
+
+
Grafana
+
Metrics & monitoring
+
grafana.lab.corestory.ai
+
+ +
+ + +
🔑
+
+
Keycloak
+
Identity & SSO
+
keycloak.lab.corestory.ai
+
+ +
+ + +
🔀
+
+
Traefik
+
Reverse proxy dashboard
+
traefik.lab.corestory.ai
+
+ +
+ + +
🔒
+
+
PKI / OpenBao
+
Secrets & certificates
+
pki.lab.corestory.ai
+
+ +
+ +
+ + + + + diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..ac54d8e --- /dev/null +++ b/nginx.conf @@ -0,0 +1,45 @@ +server { + listen 80; + listen [::]:80; + server_name localhost; + + #access_log /var/log/nginx/host.access.log main; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + + # proxy the PHP scripts to Apache listening on 127.0.0.1:80 + # + #location ~ \.php$ { + # proxy_pass http://127.0.0.1; + #} + + # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 + # + #location ~ \.php$ { + # root html; + # fastcgi_pass 127.0.0.1:9000; + # fastcgi_index index.php; + # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; + # include fastcgi_params; + #} + + # deny access to .htaccess files, if Apache's document root + # concurs with nginx's one + # + #location ~ /\.ht { + # deny all; + #} +} +