fix(config): make FRONTEND_URL optional and default to APP_URL
This commit is contained in:
parent
bfae47f584
commit
5fb92fd582
4 changed files with 21 additions and 8 deletions
|
|
@ -36,8 +36,9 @@ USER app
|
||||||
ENV PORT=8080 \
|
ENV PORT=8080 \
|
||||||
DB_PATH=/data/wannpassts.db \
|
DB_PATH=/data/wannpassts.db \
|
||||||
STATIC_DIR=/app/dist \
|
STATIC_DIR=/app/dist \
|
||||||
APP_URL=http://localhost:8080 \
|
APP_URL=http://localhost:8080
|
||||||
FRONTEND_URL=http://localhost:8080
|
# FRONTEND_URL ist bewusst nicht gesetzt: Ohne Wert leiten Callbacks auf APP_URL.
|
||||||
|
# Bei getrenntem Frontend-Host einfach -e FRONTEND_URL=https://… setzen.
|
||||||
VOLUME /data
|
VOLUME /data
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,15 @@ PORT=8080
|
||||||
# SQLite-Datenbankdatei (relativ zum backend-Verzeichnis)
|
# SQLite-Datenbankdatei (relativ zum backend-Verzeichnis)
|
||||||
DB_PATH=wannpassts.db
|
DB_PATH=wannpassts.db
|
||||||
|
|
||||||
# Öffentliche URL des Backends (wichtig für den Google-OAuth-Redirect!)
|
# Öffentliche URL des Backends. Wichtig für:
|
||||||
|
# - Google-OAuth-Redirect: {APP_URL}/api/calendars/google/callback
|
||||||
|
# - Umleitung nach erfolgreichem Google-Login (sofern FRONTEND_URL leer)
|
||||||
APP_URL=http://localhost:8080
|
APP_URL=http://localhost:8080
|
||||||
|
|
||||||
# URL des Frontends (dev: Vite, prod: gleiche Origin wie StaticDir)
|
# URL des Frontends – optional! Leer/unset = es wird APP_URL verwendet
|
||||||
FRONTEND_URL=http://localhost:5173
|
# (Single-Origin, z. B. Docker). Nur setzen, wenn das Frontend getrennt läuft
|
||||||
|
# (Dev: Vite auf http://localhost:5173).
|
||||||
|
FRONTEND_URL=
|
||||||
|
|
||||||
# Statische Secrets – in Produktion zwingend setzen (z. B. `openssl rand -hex 32`)
|
# Statische Secrets – in Produktion zwingend setzen (z. B. `openssl rand -hex 32`)
|
||||||
# JWT_SECRET sichert Logins, ENCRYPTION_KEY verschlüsselt gespeicherte Kalender-Tokens.
|
# JWT_SECRET sichert Logins, ENCRYPTION_KEY verschlüsselt gespeicherte Kalender-Tokens.
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/joho/godotenv"
|
"github.com/joho/godotenv"
|
||||||
)
|
)
|
||||||
|
|
@ -29,14 +30,19 @@ func Load() Config {
|
||||||
cfg := Config{
|
cfg := Config{
|
||||||
Port: env("PORT", "8080"),
|
Port: env("PORT", "8080"),
|
||||||
DBPath: env("DB_PATH", "wannpassts.db"),
|
DBPath: env("DB_PATH", "wannpassts.db"),
|
||||||
AppURL: env("APP_URL", "http://localhost:8080"),
|
AppURL: strings.TrimSuffix(env("APP_URL", "http://localhost:8080"), "/"),
|
||||||
FrontendURL: env("FRONTEND_URL", "http://localhost:5173"),
|
FrontendURL: strings.TrimSuffix(os.Getenv("FRONTEND_URL"), "/"),
|
||||||
JWTSecret: os.Getenv("JWT_SECRET"),
|
JWTSecret: os.Getenv("JWT_SECRET"),
|
||||||
EncryptionKey: os.Getenv("ENCRYPTION_KEY"),
|
EncryptionKey: os.Getenv("ENCRYPTION_KEY"),
|
||||||
GoogleClientID: os.Getenv("GOOGLE_CLIENT_ID"),
|
GoogleClientID: os.Getenv("GOOGLE_CLIENT_ID"),
|
||||||
GoogleClientSecret: os.Getenv("GOOGLE_CLIENT_SECRET"),
|
GoogleClientSecret: os.Getenv("GOOGLE_CLIENT_SECRET"),
|
||||||
StaticDir: env("STATIC_DIR", ""),
|
StaticDir: env("STATIC_DIR", ""),
|
||||||
}
|
}
|
||||||
|
// FRONTEND_URL ist optional: Ohne eigenen Wert leiten Google-Callbacks etc.
|
||||||
|
// auf die öffentliche App-URL (APP_URL) – wichtig für Single-Origin-Deployments.
|
||||||
|
if cfg.FrontendURL == "" {
|
||||||
|
cfg.FrontendURL = cfg.AppURL
|
||||||
|
}
|
||||||
if cfg.JWTSecret == "" {
|
if cfg.JWTSecret == "" {
|
||||||
cfg.JWTSecret = randomHex(32)
|
cfg.JWTSecret = randomHex(32)
|
||||||
log.Println("WARNUNG: JWT_SECRET nicht gesetzt – temporäres Secret erzeugt (Sessions verfallen bei Neustart).")
|
log.Println("WARNUNG: JWT_SECRET nicht gesetzt – temporäres Secret erzeugt (Sessions verfallen bei Neustart).")
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,10 @@ services:
|
||||||
# (cp backend/.env.example backend/.env) und Kommentar entfernen:
|
# (cp backend/.env.example backend/.env) und Kommentar entfernen:
|
||||||
# env_file: backend/.env
|
# env_file: backend/.env
|
||||||
environment:
|
environment:
|
||||||
|
# APP_URL = öffentliche URL; Frontend-Callbacks leiten standardmäßig dorthin.
|
||||||
APP_URL: ${APP_URL:-http://localhost:8080}
|
APP_URL: ${APP_URL:-http://localhost:8080}
|
||||||
FRONTEND_URL: ${FRONTEND_URL:-http://localhost:8080}
|
# Optional bei getrenntem Frontend-Host:
|
||||||
|
FRONTEND_URL: ${FRONTEND_URL:-}
|
||||||
JWT_SECRET: ${JWT_SECRET:-}
|
JWT_SECRET: ${JWT_SECRET:-}
|
||||||
ENCRYPTION_KEY: ${ENCRYPTION_KEY:-}
|
ENCRYPTION_KEY: ${ENCRYPTION_KEY:-}
|
||||||
GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID:-}
|
GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID:-}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue