managarten/docker/nginx/landings.conf
Till JS 61f2772789 chore(brand): rename Cards → Cardecky (display, infra, license-IDs)
- App display name → Cardecky in mana-apps.ts, MODULE_REGISTRY, alle Docs
- Domains: cardecky.mana.how (App), cardecky-api.mana.how (Marketplace
  API), cardecky.com (Marketing-Landing — cloudflared-route + nginx-Block
  vorbereitet, DNS muss noch gesetzt werden)
- 301-Redirect cards.mana.how → cardecky.mana.how (nginx + cloudflared)
  für alte Bookmarks; kann nach 6–12 Monaten wieder raus
- SPDX license IDs Cards-Personal-Use/Pro-Only-1.0 → Cardecky-* via
  Drizzle 0001-Migration (DROP CHECK → UPDATE rows → SET DEFAULT → ADD
  CHECK), inkl. _journal- und 0001_snapshot-Update
- In-mana cards-Modul: dezenter Banner zur Standalone-App (GUIDELINES
  §12), einmal schließbar via localStorage
- Docker-CORS-Listen, sso-origins.ts, Prometheus-Target aktualisiert

Technische IDs bleiben bewusst: appId 'cards', schema
mana_platform.cards.*, Verzeichnis apps/cards/, Package @cards/web,
services/cards-server, Env-Vars CARDS_*, UMAMI_WEBSITE_ID_CARDS*, Class
CardsEvents — Mana-Konvention (Brand ≠ technischer Identifier).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 13:49:47 +02:00

162 lines
4.2 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Nginx Configuration for Self-Hosted Landing Pages
# Each server block serves a different landing page from its dist/ directory
# All traffic comes through Cloudflare Tunnel → localhost:4400
# Shared settings
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/json image/svg+xml;
# ============================================
# Cardecky-Migration: 301-Redirects (2026-05-08)
# Alte cards.mana.how / cards-api.mana.how Bookmarks weiterleiten,
# bis sich Nutzer/externe Clients an die neue Domain gewöhnt haben.
# Nach 612 Monaten kann das wieder raus.
# ============================================
server {
listen 80;
server_name cards.mana.how;
return 301 https://cardecky.mana.how$request_uri;
}
server {
listen 80;
server_name cards-api.mana.how;
return 301 https://cardecky-api.mana.how$request_uri;
}
# Default server (catch-all → it.mana.how as homepage)
server {
listen 80 default_server;
server_name _;
root /srv/landings/it;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# it.mana.how — European Tech Independence
server {
listen 80;
server_name it.mana.how;
root /srv/landings/it;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# chats.mana.how — Chat Landing
server {
listen 80;
server_name chats.mana.how;
root /srv/landings/chat;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# pics.mana.how — Picture Landing
server {
listen 80;
server_name pics.mana.how;
root /srv/landings/picture;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# quotess.mana.how — Quotes Landing
server {
listen 80;
server_name quotess.mana.how;
root /srv/landings/quotes;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# presis.mana.how — Presi Landing
server {
listen 80;
server_name presis.mana.how;
root /srv/landings/presi;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# clocks.mana.how — Clock Landing
server {
listen 80;
server_name clocks.mana.how;
root /srv/landings/clock;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# cardecky.com — Cardecky Marketing-Landing (eigene .com-Domain).
# Die App selbst läuft als SvelteKit-Container auf cardecky.mana.how
# (siehe cloudflared-config.yml + docker-compose.macmini.yml `cards-web`).
server {
listen 80;
server_name cardecky.com;
root /srv/landings/cardecky;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# food.mana.how — Food Landing
server {
listen 80;
server_name food.mana.how;
root /srv/landings/food;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# citycorners.mana.how — CityCorners Landing
server {
listen 80;
server_name citycorners.mana.how;
root /srv/landings/citycorners;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# docs.mana.how — Documentation
server {
listen 80;
server_name docs.mana.how;
root /srv/landings/docs;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# status.mana.how — Public Status Page (generated by mana-status-gen every 60s)
server {
listen 80;
server_name status.mana.how;
root /srv/landings/status;
index index.html;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cache-Control "no-store" always;
# Allow ManaScore page to fetch status.json
add_header Access-Control-Allow-Origin "*" always;
add_header Access-Control-Allow-Methods "GET" always;
location / {
try_files $uri /index.html;
}
# Serve status.json directly (do not rewrite to index.html)
location = /status.json {
add_header Content-Type "application/json" always;
add_header Cache-Control "no-store" always;
add_header Access-Control-Allow-Origin "*" always;
try_files $uri =404;
}
location /health {
access_log off;
return 200 "healthy\n";
add_header Content-Type text/plain;
}
}