4.0 KiB
4.0 KiB
Environment Configuration Guide
Overview
Ce projet utilise des variables d'environnement pour la configuration. Toutes les variables ont été centralisées dans des fichiers .env.
Setup Instructions
1. Copy the example file
cp .env.example .env
2. Edit the .env file with your values
Required for Development:
GOOGLE_CLIENT_ID- Votre Google OAuth2 Client IDGOOGLE_CLIENT_SECRET- Votre Google OAuth2 Client SecretJWT_SECRET_KEY- Clé secrète pour JWT (générez une clé sécurisée)
Required for Production:
- Database credentials (
SPRING_DATASOURCE_*) - Email configuration (
SPRING_MAIL_*) - Production OAuth2 redirect URI
- Secure JWT secret key
Environment Profiles
Development (SPRING_PROFILES_ACTIVE=dev)
- Uses H2 in-memory database
- Uses Mailtrap for email testing
- CSRF disabled
- Flyway disabled
Production (SPRING_PROFILES_ACTIVE=prod)
- Uses MySQL database
- Uses production SMTP server
- CSRF enabled
- Flyway enabled for migrations
Key Variables by Category
🗄️ Database
# Development (H2)
SPRING_H2_DATASOURCE_URL=jdbc:h2:mem:xpeditis;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
# Production (MySQL)
SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/xpeditis
SPRING_DATASOURCE_USERNAME=your_username
SPRING_DATASOURCE_PASSWORD=your_password
# Development (Mailtrap)
SPRING_MAIL_HOST_DEV=sandbox.smtp.mailtrap.io
SPRING_MAIL_USERNAME_DEV=your_mailtrap_username
SPRING_MAIL_PASSWORD_DEV=your_mailtrap_password
# Production
SPRING_MAIL_HOST_PROD=your-smtp-host
SPRING_MAIL_USERNAME_PROD=your-email@domain.com
SPRING_MAIL_PASSWORD_PROD=your_password
🔐 Security & OAuth2
# JWT
JWT_SECRET_KEY=your-secure-secret-key
JWT_EXPIRATION=86400000
# Google OAuth2
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
📋 License Limits
APPLICATION_LICENSE_TRIAL_MAX_USERS=5
APPLICATION_LICENSE_BASIC_MAX_USERS=50
APPLICATION_LICENSE_PREMIUM_MAX_USERS=200
APPLICATION_LICENSE_ENTERPRISE_MAX_USERS=1000
Security Notes
🛡️ Important Security Practices:
- Never commit
.envfiles to version control - Generate secure JWT secret keys for production
- Use environment-specific secrets
- Rotate keys regularly in production
🔑 JWT Secret Key Generation:
# Generate a secure 256-bit key
openssl rand -hex 32
# Or use online generator (ensure HTTPS):
# https://generate-secret.vercel.app/32
Usage in Application
🎯 Easy Startup Scripts
Use the provided scripts for easy development and production startup:
# Development mode (loads .env automatically)
./run-dev.sh
# Production mode (validates required variables)
./run-prod.sh
# Or traditional way
./mvnw spring-boot:run
Spring Boot Configuration Loading Order:
- System environment variables (highest priority)
.envfile variablesapplication-{profile}.ymlfilesapplication.yml(lowest priority)
🔧 All YAML files now support .env variables:
application.yml- Base configuration with .env supportapplication-dev.yml- Development overrides with .env supportapplication-prod.yml- Production overrides with .env support
Docker Support
For Docker deployments, mount the .env file:
docker run -d \
--env-file .env \
-p 8080:8080 \
xpeditis-backend
Troubleshooting
Common Issues:
- Missing variables: Check
.env.examplefor required variables - Database connection: Verify database credentials and host
- Email not sending: Check SMTP configuration
- OAuth2 not working: Verify Google Console settings and redirect URIs
Debugging:
# Enable debug logging
LOGGING_LEVEL_ROOT=DEBUG
# Show SQL queries
SPRING_JPA_SHOW_SQL=true
SPRING_JPA_FORMAT_SQL=true