From d93c78a0ec7a45e386a3cd059b0c6e86e82f5ad7 Mon Sep 17 00:00:00 2001 From: Joshua Keck Date: Wed, 10 Dec 2025 12:00:05 +0100 Subject: [PATCH] feat(config): adjust to upsun --- .environment | 50 ++++++++++++++++++----------------- .platform/routes.yaml | 7 ----- .platform/services.yaml | 10 ------- .upsun/config.yaml | 58 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 84 insertions(+), 41 deletions(-) delete mode 100644 .platform/routes.yaml delete mode 100644 .platform/services.yaml create mode 100644 .upsun/config.yaml diff --git a/.environment b/.environment index 2d00e47c..efbbf1d4 100644 --- a/.environment +++ b/.environment @@ -1,30 +1,32 @@ #!/bin/bash -# This script can be a starting point to convert -# PLATFORM_RELATIONSHIPS into another environment variable -# Many CMS systems use a DATABASE_URL to connect to the database -# Feel free to use this as inspiration +# Upsun Environment Configuration +# Dieses Script erstellt die DATABASE_URL aus den Upsun-Umgebungsvariablen -getRelationshipInfo() { - RELATIONSHIP_NAME="$1" - PROPERTY="$2" - JQ_STR="to_entries[] | select(.key==\"$RELATIONSHIP_NAME\") | .value[].$PROPERTY" - CMD="echo $PLATFORM_RELATIONSHIPS | base64 -d | jq -r '$JQ_STR'" - eval $CMD -} +# Upsun stellt Relationship-Informationen über Umgebungsvariablen bereit +# Format: _ (uppercase, - wird zu _) +# Beispiel: POSTGRESDATABASE_HOST, POSTGRESDATABASE_PORT, etc. -# choose the name of the relationship to parse, feel free to alter this -RELATIONSHIP="postgresdatabase" -DB_DATABASE="main" +# Prüfen ob wir auf Upsun/Platform.sh laufen +if [ -n "$PLATFORM_RELATIONSHIPS" ]; then + # Upsun/Platform.sh Umgebung - Relationships parsen + getRelationshipInfo() { + RELATIONSHIP_NAME="$1" + PROPERTY="$2" + JQ_STR="to_entries[] | select(.key==\"$RELATIONSHIP_NAME\") | .value[].$PROPERTY" + CMD="echo $PLATFORM_RELATIONSHIPS | base64 -d | jq -r '$JQ_STR'" + eval $CMD + } -# Extract the information we need -DB_TYPE=$(getRelationshipInfo "$RELATIONSHIP" 'scheme') -DB_USERNAME=$(getRelationshipInfo "$RELATIONSHIP" 'username') -DB_HOST=$(getRelationshipInfo "$RELATIONSHIP" 'host') -DB_PASS=$(getRelationshipInfo "$RELATIONSHIP" 'password') -DB_PORT=$(getRelationshipInfo "$RELATIONSHIP" 'port') + RELATIONSHIP="postgresdatabase" + DB_DATABASE="main" -# Create your DATABASE_URL variable here -export DATABASE_URL="postgresql://$DB_USERNAME:$DB_PASS@$DB_HOST:$DB_PORT/$DB_DATABASE" + DB_USERNAME=$(getRelationshipInfo "$RELATIONSHIP" 'username') + DB_HOST=$(getRelationshipInfo "$RELATIONSHIP" 'host') + DB_PASS=$(getRelationshipInfo "$RELATIONSHIP" 'password') + DB_PORT=$(getRelationshipInfo "$RELATIONSHIP" 'port') -# So now we have postgresql://user:@db_mysql.internal:3306/main -# echo "$DATABASE_URL" #only echo to test since it will expose the credentials + export DATABASE_URL="postgresql://$DB_USERNAME:$DB_PASS@$DB_HOST:$DB_PORT/$DB_DATABASE" +fi + +# Hinweis: Die DATABASE_URL kann auch direkt in den Upsun-Projekteinstellungen +# als Umgebungsvariable gesetzt werden, was die bevorzugte Methode ist. diff --git a/.platform/routes.yaml b/.platform/routes.yaml deleted file mode 100644 index 8fa2c767..00000000 --- a/.platform/routes.yaml +++ /dev/null @@ -1,7 +0,0 @@ -"https://{default}/": - type: upstream - upstream: "app:http" - -# "https://www.{default}/": -# type: redirect -# to: "https://{default}/" diff --git a/.platform/services.yaml b/.platform/services.yaml deleted file mode 100644 index 4bd33fbc..00000000 --- a/.platform/services.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# The name given to the PostgreSQL service (lowercase alphanumeric only). -dbpostgres: - # The type of your service (postgresql), which uses the format - # 'type:version'. Be sure to consult the PostgreSQL documentation - # (https://docs.platform.sh/add-services/postgresql.html#supported-versions) - # when choosing a version. If you specify a version number which is not available, - # the CLI will return an error. - type: postgresql:15 - # The disk attribute is the size of the persistent disk (in MB) allocated to the service. - disk: 4864 diff --git a/.upsun/config.yaml b/.upsun/config.yaml new file mode 100644 index 00000000..351acd51 --- /dev/null +++ b/.upsun/config.yaml @@ -0,0 +1,58 @@ +# Upsun Konfiguration für Umami Analytics +# https://docs.upsun.com/configuration.html + +applications: + app: + # Die Anwendung verwendet Node.js 22 + stack: + - 'nodejs:22' + + # Build-Konfiguration + build: + flavor: none + + # Build- und Deploy-Hooks + hooks: + build: | + set -e + corepack enable + corepack prepare pnpm@latest --activate + pnpm install --frozen-lockfile + pnpm build + deploy: | + set -e + pnpm update-db + + # Writable Mounts für Uploads + mounts: + 'web/uploads': + source: storage + source_path: uploads + + # Webserver-Konfiguration + web: + commands: + start: 'pnpm start' + + # Beziehung zur PostgreSQL-Datenbank + relationships: + postgresdatabase: 'dbpostgres:postgresql' + +# Service-Definitionen +services: + dbpostgres: + type: postgresql:16 + configuration: + resources: + disk: 5120 + +# Routen-Konfiguration +routes: + 'https://{default}/': + type: upstream + upstream: 'app:http' + + # Optional: www-Redirect aktivieren + # 'https://www.{default}/': + # type: redirect + # to: 'https://{default}/'