chore: remove hardcoded local deployment secrets
Co-authored-by: Velik <hongochai10@users.noreply.github.com>
This commit is contained in:
@@ -6,8 +6,9 @@ This directory contains Docker Compose configuration for running the entire Good
|
||||
|
||||
```bash
|
||||
# 1. Setup environment variables
|
||||
cp env.local.example .env
|
||||
cp env.local.example .env.local
|
||||
# Edit .env.local with your values (JWT_SECRET, DATABASE_URL, etc.)
|
||||
# Edit both files with your values (JWT_SECRET, service DB URLs, Redis, etc.)
|
||||
|
||||
# 2. Start all services
|
||||
docker-compose up -d
|
||||
@@ -49,7 +50,7 @@ docker-compose logs -f
|
||||
|
||||
## Environment Configuration
|
||||
|
||||
Environment variables are managed in `.env.local`:
|
||||
Environment variables are managed in `.env` and `.env.local`:
|
||||
|
||||
### Required Variables
|
||||
|
||||
@@ -57,9 +58,12 @@ Environment variables are managed in `.env.local`:
|
||||
# Authentication (MUST be same across all services)
|
||||
JWT_SECRET=your-super-secret-jwt-key-min-32-characters
|
||||
JWT_REFRESH_SECRET=your-super-secret-refresh-key-min-32-characters
|
||||
JWT_ID_SECRET=your-super-secret-id-key-min-32-characters
|
||||
|
||||
# Database (Neon PostgreSQL)
|
||||
DATABASE_URL=postgresql://user:pass@host.neon.tech/db?sslmode=require
|
||||
# IAM + service databases (Neon PostgreSQL)
|
||||
IAM_DATABASE_URL=Host=...;Port=5432;Database=iam_service;Username=...;Password=...;SSL Mode=Require
|
||||
STORAGE_DATABASE_URL=Host=...;Port=5432;Database=storage_service;Username=...;Password=...;SSL Mode=Require
|
||||
ORDER_DATABASE_URL=Host=...;Port=5432;Database=order_service;Username=...;Password=...;SSL Mode=Require
|
||||
```
|
||||
|
||||
### Optional Variables
|
||||
@@ -68,6 +72,7 @@ DATABASE_URL=postgresql://user:pass@host.neon.tech/db?sslmode=require
|
||||
# Redis
|
||||
REDIS_HOST=redis
|
||||
REDIS_PORT=6379
|
||||
REDIS_PASSWORD=replace-with-redis-password
|
||||
|
||||
# Observability
|
||||
TRACING_ENABLED=false
|
||||
@@ -75,6 +80,12 @@ JAEGER_ENDPOINT=http://jaeger:14268/api/traces
|
||||
|
||||
# CORS
|
||||
CORS_ORIGIN=http://localhost:3000,http://localhost:3001
|
||||
|
||||
# Object storage and messaging
|
||||
MINIO_ENDPOINT=minio:9000
|
||||
MINIO_ACCESS_KEY=...
|
||||
MINIO_SECRET_KEY=...
|
||||
RABBITMQ_PASSWORD=...
|
||||
```
|
||||
|
||||
## Common Commands
|
||||
@@ -192,8 +203,8 @@ docker-compose up -d service-name
|
||||
### Database Connection Issues
|
||||
|
||||
```bash
|
||||
# Verify DATABASE_URL in .env.local
|
||||
cat .env.local | grep DATABASE_URL
|
||||
# Verify IAM_DATABASE_URL in .env/.env.local
|
||||
cat .env | grep IAM_DATABASE_URL
|
||||
|
||||
# Test connection from service
|
||||
docker-compose exec iam-service sh
|
||||
@@ -288,7 +299,7 @@ docker-compose down -v && docker-compose up -d
|
||||
### Security Checklist
|
||||
|
||||
- Change default `JWT_SECRET` (min 32 characters)
|
||||
- Use environment-specific `.env.local` (never commit)
|
||||
- Use environment-specific `.env` / `.env.local` with real secrets (never commit real values)
|
||||
- Verify CORS origins match your frontend URLs
|
||||
- Enable HTTPS in production (not needed for local)
|
||||
|
||||
|
||||
@@ -6,8 +6,9 @@ Thư mục này chứa cấu hình Docker Compose để chạy toàn bộ nền
|
||||
|
||||
```bash
|
||||
# 1. Thiết lập biến môi trường
|
||||
cp env.local.example .env
|
||||
cp env.local.example .env.local
|
||||
# Chỉnh sửa .env.local với các giá trị của bạn (JWT_SECRET, DATABASE_URL, etc.)
|
||||
# Chỉnh sửa cả 2 file với các giá trị của bạn (JWT_SECRET, DB URL từng service, Redis, v.v.)
|
||||
|
||||
# 2. Khởi động tất cả services
|
||||
docker-compose up -d
|
||||
@@ -49,7 +50,7 @@ docker-compose logs -f
|
||||
|
||||
## Cấu Hình Môi Trường
|
||||
|
||||
Biến môi trường được quản lý trong `.env.local`:
|
||||
Biến môi trường được quản lý trong `.env` và `.env.local`:
|
||||
|
||||
### Biến Bắt Buộc
|
||||
|
||||
@@ -57,9 +58,12 @@ Biến môi trường được quản lý trong `.env.local`:
|
||||
# Xác thực (PHẢI giống nhau cho tất cả services)
|
||||
JWT_SECRET=your-super-secret-jwt-key-min-32-characters
|
||||
JWT_REFRESH_SECRET=your-super-secret-refresh-key-min-32-characters
|
||||
JWT_ID_SECRET=your-super-secret-id-key-min-32-characters
|
||||
|
||||
# Database (Neon PostgreSQL)
|
||||
DATABASE_URL=postgresql://user:pass@host.neon.tech/db?sslmode=require
|
||||
# IAM + database từng service (Neon PostgreSQL)
|
||||
IAM_DATABASE_URL=Host=...;Port=5432;Database=iam_service;Username=...;Password=...;SSL Mode=Require
|
||||
STORAGE_DATABASE_URL=Host=...;Port=5432;Database=storage_service;Username=...;Password=...;SSL Mode=Require
|
||||
ORDER_DATABASE_URL=Host=...;Port=5432;Database=order_service;Username=...;Password=...;SSL Mode=Require
|
||||
```
|
||||
|
||||
### Biến Tùy Chọn
|
||||
@@ -68,6 +72,7 @@ DATABASE_URL=postgresql://user:pass@host.neon.tech/db?sslmode=require
|
||||
# Redis
|
||||
REDIS_HOST=redis
|
||||
REDIS_PORT=6379
|
||||
REDIS_PASSWORD=replace-with-redis-password
|
||||
|
||||
# Observability
|
||||
TRACING_ENABLED=false
|
||||
@@ -75,6 +80,12 @@ JAEGER_ENDPOINT=http://jaeger:14268/api/traces
|
||||
|
||||
# CORS
|
||||
CORS_ORIGIN=http://localhost:3000,http://localhost:3001
|
||||
|
||||
# Object storage và messaging
|
||||
MINIO_ENDPOINT=minio:9000
|
||||
MINIO_ACCESS_KEY=...
|
||||
MINIO_SECRET_KEY=...
|
||||
RABBITMQ_PASSWORD=...
|
||||
```
|
||||
|
||||
## Các Lệnh Thường Dùng
|
||||
@@ -192,8 +203,8 @@ docker-compose up -d service-name
|
||||
### Vấn Đề Kết Nối Database
|
||||
|
||||
```bash
|
||||
# Xác minh DATABASE_URL trong .env.local
|
||||
cat .env.local | grep DATABASE_URL
|
||||
# Xác minh IAM_DATABASE_URL trong .env/.env.local
|
||||
cat .env | grep IAM_DATABASE_URL
|
||||
|
||||
# Test connection từ service
|
||||
docker-compose exec iam-service sh
|
||||
@@ -286,7 +297,7 @@ docker-compose down -v && docker-compose up -d
|
||||
### Security Checklist
|
||||
|
||||
- Thay đổi `JWT_SECRET` mặc định (tối thiểu 32 ký tự)
|
||||
- Sử dụng `.env.local` riêng cho từng môi trường (không commit)
|
||||
- Sử dụng `.env` / `.env.local` theo từng môi trường, không commit secret thật
|
||||
- Xác minh CORS origins khớp với frontend URLs
|
||||
- Bật HTTPS trong production (không cần cho local)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user