Skip to content

Environment Configuration

Environment Variable Configuration

The project uses .env file to manage environment variables. Create a .env file in the project root directory, referring to .env.example for configuration.

bash
# Copy environment variable template
cp .env.example .env

Complete Environment Variable Description

Database Configuration

Variable NameDescriptionDefault ValueRequired
DB_HOSTDatabase host addresslocalhostYes
DB_PORTDatabase port3306Yes
DB_USERDatabase usernamerootYes
DB_PASSWORDDatabase password-Yes
DB_NAMEDatabase namenuxt_blogYes
env
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=nuxt_blog

Redis Configuration

Variable NameDescriptionDefault ValueRequired
REDIS_URLRedis connection addressredis://localhost:6379Yes
REDIS_PASSWORDRedis password-No
CACHE_STORAGECache storage method (redis or file)redisNo
env
REDIS_URL=redis://localhost:6379
REDIS_PASSWORD=redispassword
CACHE_STORAGE=redis

Note:

  • When CACHE_STORAGE is set to file, cache will be stored in the file system
  • Recommended to use redis in production for better performance

JWT Authentication Configuration

Variable NameDescriptionDefault ValueRequired
JWT_SECRETJWT signing secret key-Yes
JWT_EXPIRES_INToken expiration time7dNo
env
JWT_SECRET=your_jwt_secret_key_here_please_change_in_production
JWT_EXPIRES_IN=7d

⚠️ Important:

  • JWT_SECRET must be random and confidential string
  • Use strong passwords in production environment
  • JWT_EXPIRES_IN supports formats: 7d, 24h, 60m, 3600s, etc.

File Storage Configuration

Local Storage

env
# Using local file system storage
# No additional configuration needed, files stored in ./uploads directory

S3 Compatible Storage (MinIO/Alibaba Cloud OSS/Tencent Cloud COS, etc.)

env
# AWS S3 / MinIO
STORAGE_TYPE=s3
S3_REGION=us-east-1
S3_ACCESS_KEY_ID=your_access_key
S3_SECRET_ACCESS_KEY=your_secret_key
S3_BUCKET_NAME=uploads
S3_ENDPOINT=https://s3.example.com

# Or using MinIO
S3_REGION=us-east-1
S3_ACCESS_KEY_ID=minioadmin
S3_SECRET_ACCESS_KEY=minioadmin
S3_BUCKET_NAME=uploads
S3_ENDPOINT=http://localhost:9000
S3_USE_SSL=false

Email Configuration (Optional)

Used for sending password reset emails and other functions.

env
# SMTP email configuration
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your_email@gmail.com
SMTP_PASSWORD=your_app_password
SMTP_FROM=noreply@yourdomain.com

Application Configuration

Variable NameDescriptionDefault Value
PORTApplication port3000
HOSTListen address0.0.0.0
NODE_ENVRuntime environmentdevelopment
env
PORT=3000
HOST=0.0.0.0
NODE_ENV=production

Configuration Examples

Development Environment

env
# Database configuration
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=root
DB_NAME=nuxt_blog_dev

# Redis configuration
REDIS_URL=redis://localhost:6379
REDIS_PASSWORD=
CACHE_STORAGE=redis

# JWT configuration
JWT_SECRET=dev_jwt_secret_key
JWT_EXPIRES_IN=7d

# Application configuration
PORT=3000
NODE_ENV=development

Production Environment

env
# Database configuration
DB_HOST=your-production-db-host
DB_PORT=3306
DB_USER=your_db_user
DB_PASSWORD=strong_password_here
DB_NAME=nuxt_blog

# Redis configuration
REDIS_URL=redis://your-redis-host:6379
REDIS_PASSWORD=strong_redis_password
CACHE_STORAGE=redis

# JWT configuration
JWT_SECRET=very_strong_random_secret_key_at_least_32_chars
JWT_EXPIRES_IN=7d

# S3 storage configuration
STORAGE_TYPE=s3
S3_REGION=us-east-1
S3_ACCESS_KEY_ID=your_aws_access_key
S3_SECRET_ACCESS_KEY=your_aws_secret_key
S3_BUCKET_NAME=your-bucket-name
S3_ENDPOINT=https://s3.amazonaws.com

# Email configuration
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=noreply@yourdomain.com
SMTP_PASSWORD=your_app_password
SMTP_FROM=noreply@yourdomain.com

# Application configuration
PORT=3000
HOST=0.0.0.0
NODE_ENV=production

Docker Environment Configuration

If using Docker deployment, need to modify Redis configuration to connect to Redis service inside container:

env
# Redis configuration (Docker environment)
REDIS_URL=redis://redis:6379
REDIS_PASSWORD=redispassword

Configuration Validation

After configuration is complete, you can use the following commands to verify if configuration is correct:

bash
# Start development server
pnpm run dev

# Check logs to confirm database and Redis connection success

Common Issues

1. Database Connection Failed

Check the following points:

  • MySQL service is running
  • Username and password are correct
  • Database has been created
  • Firewall allows connection

2. Redis Connection Failed

  • Ensure Redis service is running
  • Check if Redis password is correct
  • Confirm port is not blocked by firewall

3. JWT_SECRET Not Set

  • Ensure .env file has JWT_SECRET set
  • Production environment must use strong random string

4. File Upload Failed

  • Check if storage configuration is correct
  • Ensure upload directory has write permission (local storage)
  • Check S3/MinIO configuration is correct (cloud storage)

Security Recommendations

  1. Never commit .env file to version control
  2. Production environment must use strong passwords
  3. Regularly change keys and passwords
  4. Use environment variable management tools (such as Docker Secrets, Vault, etc.)
  5. Limit database and Redis access permissions