diff --git a/.env b/.env index d86173ea..28be54ac 100644 --- a/.env +++ b/.env @@ -1,7 +1,13 @@ +# Application +NODE_ENV=production +NEXT_PUBLIC_BASE_URL=https://klz-cables.com +LOG_LEVEL=info + +# WooCommerce & WordPress WOOCOMMERCE_URL=https://klz-cables.com WOOCOMMERCE_CONSUMER_KEY=ck_38d97df86880e8fefbd54ab5cdf47a9c5a9e5b39 WOOCOMMERCE_CONSUMER_SECRET=cs_d675ee2ac2ec7c22de84ae5451c07e42b1717759 -WORDPRESS_APP_PASSWORD=DlJH 49dp fC3a Itc3 Sl7Z Wz0k' +WORDPRESS_APP_PASSWORD="DlJH 49dp fC3a Itc3 Sl7Z Wz0k" # Umami Analytics NEXT_PUBLIC_UMAMI_WEBSITE_ID=59a7db94-0100-4c7e-98ef-99f45b17f9c3 @@ -9,12 +15,15 @@ UMAMI_SCRIPT_URL=https://analytics.infra.mintel.me/script.js # GlitchTip (Sentry protocol) SENTRY_DSN=https://c10957d0182245b1a2a806ac2d34a197@errors.infra.mintel.me/1 -NEXT_PUBLIC_SENTRY_DSN=https://c10957d0182245b1a2a806ac2d34a197@klz-cables.com/errors/1 + +# Redis Cache +REDIS_URL= +REDIS_KEY_PREFIX=klz: # SMTP Configuration MAIL_HOST=smtp.eu.mailgun.org MAIL_PORT=587 MAIL_USERNAME=postmaster@mg.mintel.me MAIL_PASSWORD=4592fcb94599ee1a45b4ac2386fd0a64-102c75d8-ca2870e6 -MAIL_FROM=KLZ Cables +MAIL_FROM="KLZ Cables " MAIL_RECIPIENTS=marc@cablecreations.de,info@klz-cables.com diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 4dd957d3..74512dae 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -74,7 +74,8 @@ jobs: echo "" echo "📦 Build Arguments:" echo " • NEXT_PUBLIC_UMAMI_WEBSITE_ID: ${{ secrets.NEXT_PUBLIC_UMAMI_WEBSITE_ID != '' && '***' || 'NOT SET' }}" - echo " • NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.SENTRY_DSN != '' && '***' || 'NOT SET' }}" + echo " • SENTRY_DSN: ${{ secrets.SENTRY_DSN != '' && '***' || 'NOT SET' }}" + echo " • NEXT_PUBLIC_BASE_URL: ${{ secrets.NEXT_PUBLIC_BASE_URL != '' && '***' || 'NOT SET' }}" echo "" echo "⏱️ Build started at: $(date -u +'%Y-%m-%d %H:%M:%S UTC')" echo "" @@ -85,7 +86,8 @@ jobs: --pull \ --platform linux/arm64 \ --build-arg NEXT_PUBLIC_UMAMI_WEBSITE_ID="${{ secrets.NEXT_PUBLIC_UMAMI_WEBSITE_ID }}" \ - --build-arg NEXT_PUBLIC_SENTRY_DSN="${{ secrets.SENTRY_DSN }}" \ + --build-arg SENTRY_DSN="${{ secrets.SENTRY_DSN }}" \ + --build-arg NEXT_PUBLIC_BASE_URL="${{ secrets.NEXT_PUBLIC_BASE_URL }}" \ -t registry.infra.mintel.me/mintel/klz-cables.com:latest \ --push . diff --git a/Dockerfile b/Dockerfile index 9ec25dd5..106de8ed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,10 +24,12 @@ ENV NEXT_TELEMETRY_DISABLED=1 ARG NEXT_PUBLIC_UMAMI_WEBSITE_ID ARG NEXT_PUBLIC_UMAMI_SCRIPT_URL -ARG NEXT_PUBLIC_SENTRY_DSN +ARG SENTRY_DSN +ARG NEXT_PUBLIC_BASE_URL ENV NEXT_PUBLIC_UMAMI_WEBSITE_ID=$NEXT_PUBLIC_UMAMI_WEBSITE_ID ENV NEXT_PUBLIC_UMAMI_SCRIPT_URL=$NEXT_PUBLIC_UMAMI_SCRIPT_URL -ENV NEXT_PUBLIC_SENTRY_DSN=$NEXT_PUBLIC_SENTRY_DSN +ENV SENTRY_DSN=$SENTRY_DSN +ENV NEXT_PUBLIC_BASE_URL=$NEXT_PUBLIC_BASE_URL RUN npm run build diff --git a/docker-compose.yml b/docker-compose.yml index 2b82b4f3..2bd63b81 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -62,10 +62,18 @@ services: - NEXT_PUBLIC_UMAMI_SCRIPT_URL=${NEXT_PUBLIC_UMAMI_SCRIPT_URL:-https://analytics.infra.mintel.me/script.js} # GlitchTip (Sentry protocol) - SENTRY_DSN=${SENTRY_DSN} - - NEXT_PUBLIC_SENTRY_DSN=${NEXT_PUBLIC_SENTRY_DSN:-${SENTRY_DSN}} # Redis (app-spezifischer DB-Index) - REDIS_URL=${REDIS_URL:-redis://redis:6379/2} - REDIS_KEY_PREFIX=${REDIS_KEY_PREFIX:-klz:} + # Mail + - MAIL_HOST=${MAIL_HOST} + - MAIL_PORT=${MAIL_PORT} + - MAIL_USERNAME=${MAIL_USERNAME} + - MAIL_PASSWORD=${MAIL_PASSWORD} + - MAIL_FROM=${MAIL_FROM} + - MAIL_RECIPIENTS=${MAIL_RECIPIENTS} + # App + - NEXT_PUBLIC_BASE_URL=${NEXT_PUBLIC_BASE_URL} networks: infra: diff --git a/lib/config.ts b/lib/config.ts index 9430b20a..c1caa125 100644 --- a/lib/config.ts +++ b/lib/config.ts @@ -23,13 +23,11 @@ export const config = { errors: { glitchtip: { - // Server-side DSN (direct to GlitchTip) + // Use SENTRY_DSN for both server and client (proxied) dsn: process.env.SENTRY_DSN, - // Client-side DSN (proxied through Next.js) - publicDsn: process.env.NEXT_PUBLIC_SENTRY_DSN, // The proxied origin used in the frontend proxyPath: '/errors', - enabled: Boolean(process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN), + enabled: Boolean(process.env.SENTRY_DSN), }, }, @@ -84,7 +82,6 @@ export function getMaskedConfig() { errors: { glitchtip: { dsn: mask(config.errors.glitchtip.dsn), - publicDsn: mask(config.errors.glitchtip.publicDsn), enabled: config.errors.glitchtip.enabled, }, }, diff --git a/sentry.client.config.ts b/sentry.client.config.ts index 408012cd..4beaf25f 100644 --- a/sentry.client.config.ts +++ b/sentry.client.config.ts @@ -1,6 +1,6 @@ import * as Sentry from '@sentry/nextjs'; -const dsn = process.env.NEXT_PUBLIC_SENTRY_DSN; +const dsn = process.env.SENTRY_DSN; Sentry.init({ dsn,