Compare commits

...

2 Commits

Author SHA1 Message Date
663eb61352 added basic route for production 2025-10-28 23:54:28 +01:00
23f1dd7aa0 updated docker entry point 2025-10-28 23:33:00 +01:00
4 changed files with 20 additions and 18 deletions

View File

@@ -9,41 +9,42 @@ generate_secret() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+-=' < /dev/urandom | head -c $length tr -dc 'A-Za-z0-9!@#$%^&*()_+-=' < /dev/urandom | head -c $length
} }
# Prüfe ob .env existiert, falls nicht erstelle sie # Prüfe ob .env existiert
if [ ! -f /app/.env ]; then if [ ! -f /app/.env ]; then
echo "📝 Erstelle .env Datei..." echo "📝 Erstelle .env Datei..."
# Generiere automatisch ein sicheres JWT Secret falls nicht gesetzt # Verwende vorhandenes JWT_SECRET oder generiere ein neues
if [ -z "$JWT_SECRET" ] || [ "$JWT_SECRET" = "your-secret-key-please-change" ]; then if [ -z "$JWT_SECRET" ] || [ "$JWT_SECRET" = "your-secret-key-please-change" ]; then
export JWT_SECRET=$(generate_secret 64) export JWT_SECRET=$(generate_secret 64)
echo "🔑 Automatisch generiertes JWT Secret wurde erstellt" echo "🔑 Automatisch sicheres JWT Secret generiert"
else
echo "🔑 Verwende vorhandenes JWT Secret aus Umgebungsvariable"
fi fi
# Erstelle .env aus Template # Erstelle .env aus Template mit envsubst
envsubst < /app/.env.template > /app/.env envsubst < /app/.env.template > /app/.env
echo "✅ .env Datei erstellt"
# Logge die ersten Zeilen (ohne Secrets)
echo "✅ .env Datei erstellt mit folgenden Einstellungen:"
head -n 5 /app/.env
else else
echo " .env Datei existiert bereits" echo " .env Datei existiert bereits"
# Validiere bestehende .env Datei # Wenn .env existiert, aber JWT_SECRET Umgebungsvariable gesetzt ist, aktualisiere sie
if ! grep -q "JWT_SECRET=" /app/.env; then if [ -n "$JWT_SECRET" ] && [ "$JWT_SECRET" != "your-secret-key-please-change" ]; then
echo "❌ Fehler: JWT_SECRET nicht in .env gefunden" echo "🔑 Aktualisiere JWT Secret in .env Datei"
exit 1 # Aktualisiere nur das JWT_SECRET in der .env Datei
sed -i "s/^JWT_SECRET=.*/JWT_SECRET=$JWT_SECRET/" /app/.env
fi fi
fi fi
# Sicherheitsüberprüfungen # Validiere dass JWT_SECERT nicht der Standardwert ist
if grep -q "your-secret-key" /app/.env; then if grep -q "JWT_SECRET=your-secret-key-please-change" /app/.env; then
echo "❌ FEHLER: Standard JWT Secret in .env gefunden - bitte ändern!" echo "❌ FEHLER: Standard JWT Secret in .env gefunden!"
echo "❌ Bitte setzen Sie JWT_SECRET Umgebungsvariable"
exit 1 exit 1
fi fi
# Setze sichere Berechtigungen # Setze sichere Berechtigungen
chmod 600 /app/.env chmod 600 /app/.env
chown -R schichtplaner:nodejs /app
echo "🔧 Starte Anwendung..." echo "🔧 Starte Anwendung..."
exec "$@" exec "$@"

View File

@@ -1,4 +1,4 @@
// frontend/src/pages/Features/Features.tsx // frontend/src/components/Layou/FooterLinks/Features/Features.tsx
import React from 'react'; import React from 'react';
const Features: React.FC = () => { const Features: React.FC = () => {

View File

@@ -107,7 +107,7 @@
.createButton { .createButton {
padding: 10px 20px; padding: 10px 20px;
background-color: #2ecc71; background-color: #51258f;
color: white; color: white;
border: none; border: none;
border-radius: 4px; border-radius: 4px;
@@ -116,7 +116,7 @@
} }
.createButton:hover { .createButton:hover {
background-color: #27ae60; background-color: #51258f;
} }
.createButton:disabled { .createButton:disabled {

View File

@@ -61,6 +61,7 @@ export default defineConfig(({ mode }) => {
sourcemap: isDevelopment ? 'inline' : false, sourcemap: isDevelopment ? 'inline' : false,
// Generate deterministic hashes for better caching and security // Generate deterministic hashes for better caching and security
assetsDir: 'assets', assetsDir: 'assets',
base: mode === 'production' ? '/' : '/',
rollupOptions: { rollupOptions: {
output: { output: {
// Security: Use content hashes for cache busting and integrity // Security: Use content hashes for cache busting and integrity