mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 23:01:09 +02:00
- 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>
162 lines
4.2 KiB
Text
162 lines
4.2 KiB
Text
# 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 6–12 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;
|
||
}
|
||
}
|