-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
155 lines (138 loc) · 5.22 KB
/
Copy path.env.example
File metadata and controls
155 lines (138 loc) · 5.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# Jobhunter local production configuration
# Copy to ".env" before running Docker Compose.
COMPOSE_PROJECT_NAME=jobhunter
# Published Docker images. Use versioned tags for reproducible demos.
DOCKERHUB_USERNAME=nguyenson1710
IMAGE_TAG=1.0.5
BACKEND_IMAGE=nguyenson1710/jobhunter-backend:1.0.5
FRONTEND_IMAGE=nguyenson1710/jobhunter-frontend:1.0.5
# Host ports. If a port is occupied, change it here and update public URLs below.
FRONTEND_PORT=3001
BACKEND_PORT=8080
DB_PORT=3307
# MySQL
MYSQL_DATABASE=jobhunter
MYSQL_USER=jobhunter
MYSQL_PASSWORD=jobhunter
MYSQL_ROOT_PASSWORD=root
TZ=Asia/Ho_Chi_Minh
# Backend profile for local production-like Docker runtime.
SPRING_PROFILES_ACTIVE=dev,docker
FLYWAY_ENABLED=true
SON_JPA_DDL_AUTO=update
JOBHUNTER_SEED_ENABLED=true
# Admin bootstrap. Replace before sharing a live demo.
JOBHUNTER_BOOTSTRAP_ADMIN_ENABLED=true
JOBHUNTER_BOOTSTRAP_ADMIN_EMAIL=admin@jobhunter.local
JOBHUNTER_BOOTSTRAP_ADMIN_PASSWORD=changeme123
JOBHUNTER_BOOTSTRAP_ADMIN_NAME=Super Admin
# Browser/API origins
CORS_ALLOWED_ORIGINS=http://localhost:3000,http://localhost:3001,http://localhost:3010,http://127.0.0.1:3000,http://127.0.0.1:3001,http://127.0.0.1:3010
NEXT_PUBLIC_API_BASE_URL=http://localhost:8080
NEXT_PUBLIC_STORAGE_BASE_URL=http://localhost:8080
INTERNAL_API_BASE_URL=http://backend:8080
# JWT. Replace in any non-demo environment.
JWT_BASE64_SECRET=g/AYKfaK6dDKXZFgopotLApRTC79KZo9uIWfWCXH/bKPDt3TgG4jEX5Dm+hboY2TJmEuyVPXbSrNpvgD/SGu4A==
JWT_ACCESS_TOKEN_TTL=900
JWT_REFRESH_TOKEN_TTL=604800
JWT_COOKIE_SECURE=false
JWT_COOKIE_SAME_SITE=Lax
# Upload/storage inside backend container
UPLOAD_BASE_URI=file:///app/storage/
UPLOAD_MAX_SIZE_BYTES=5242880
UPLOAD_MAX_FILE_SIZE=10MB
UPLOAD_MAX_REQUEST_SIZE=10MB
# Mail. Keep disabled unless SMTP is configured.
MAIL_ENABLED=false
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_FROM=
MAIL_SMTP_AUTH=true
MAIL_SMTP_STARTTLS_ENABLE=true
MAIL_CONNECTION_TIMEOUT_MS=5000
MAIL_TIMEOUT_MS=5000
MAIL_WRITE_TIMEOUT_MS=5000
MAIL_TEMPLATE_APP_NAME=Jobhunter
MAIL_TEMPLATE_PORTAL_URL=http://localhost:3001
MAIL_TEMPLATE_SUPPORT_EMAIL=support@jobhunter.local
JOBHUNTER_PUBLIC_API_URL=http://localhost:8080
MANAGEMENT_HEALTH_MAIL_ENABLED=false
PASSWORD_RESET_TTL_MINUTES=30
PASSWORD_RESET_DEV_TOKEN_ENABLED=true
# Production safety and abuse protection
JOBHUNTER_PROD_GUARD_ENABLED=true
JOBHUNTER_UNSAFE_METHOD_HEADER_ENABLED=true
JOBHUNTER_RATE_LIMIT_ENABLED=true
JOBHUNTER_RATE_LIMIT_LOGIN_MAX=10
JOBHUNTER_RATE_LIMIT_LOGIN_WINDOW_SECONDS=60
JOBHUNTER_RATE_LIMIT_PASSWORD_RESET_MAX=5
JOBHUNTER_RATE_LIMIT_PASSWORD_RESET_WINDOW_SECONDS=900
JOBHUNTER_RATE_LIMIT_AI_CHAT_MAX=20
JOBHUNTER_RATE_LIMIT_AI_CHAT_WINDOW_SECONDS=60
# Actuator, metrics, tracing, and local observability
MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE=health,info,prometheus,metrics
MANAGEMENT_ENDPOINT_HEALTH_SHOW_DETAILS=never
MANAGEMENT_METRICS_EXPORT_PROMETHEUS_ENABLED=true
MANAGEMENT_TRACING_ENABLED=true
MANAGEMENT_TRACING_SAMPLING_PROBABILITY=0.10
OTEL_SERVICE_NAME=jobhunter-backend
OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4318
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://otel-collector:4318/v1/traces
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://otel-collector:4318/v1/metrics
OTEL_RESOURCE_ATTRIBUTES=deployment.environment=local-production,service.namespace=jobhunter
NEXT_PUBLIC_CLIENT_ERROR_REPORTING_ENABLED=true
# Observability ports
PROMETHEUS_PORT=9090
ALERTMANAGER_PORT=9093
ALERT_WEBHOOK_PORT=9094
GRAFANA_PORT=3002
LOKI_PORT=3100
OTEL_COLLECTOR_GRPC_PORT=4317
OTEL_COLLECTOR_HTTP_PORT=4318
OTEL_COLLECTOR_HEALTH_PORT=13133
GRAFANA_ADMIN_USER=admin
GRAFANA_ADMIN_PASSWORD=jobhunter
PROMETHEUS_RETENTION=15d
# Scheduled MySQL backups
MYSQL_BACKUP_INTERVAL_SECONDS=86400
MYSQL_BACKUP_RETENTION_DAYS=14
# Scheduler jobs
JOBHUNTER_SCHEDULER_ENABLED=false
JOBHUNTER_MAIL_CRON_ENABLED=false
JOBHUNTER_MAIL_CRON=0 0 9 * * *
JOBHUNTER_MAIL_CRON_ZONE=Asia/Ho_Chi_Minh
JOBHUNTER_MAIL_CRON_RECIPIENT=
JOBHUNTER_MAIL_CRON_SUBJECT_PREFIX=[Jobhunter Scheduler]
JOBHUNTER_MAIL_CRON_TEMPLATE=mail/scheduler-heartbeat
JOBHUNTER_WEEKLY_RECOMMENDATION_ENABLED=false
JOBHUNTER_WEEKLY_RECOMMENDATION_CRON=0 0 8 * * MON
JOBHUNTER_WEEKLY_RECOMMENDATION_ZONE=Asia/Ho_Chi_Minh
JOBHUNTER_WEEKLY_RECOMMENDATION_MAX_JOBS=8
JOBHUNTER_WEEKLY_RECOMMENDATION_RECENT_APPLY_DAYS=180
JOBHUNTER_WEEKLY_RECOMMENDATION_FALLBACK_ENABLED=true
JOBHUNTER_WEEKLY_RECOMMENDATION_MANUAL_TRIGGER_ENABLED=false
JOBHUNTER_WEEKLY_RECOMMENDATION_MANUAL_TRIGGER_PROFILES=dev,local,docker,test
JOBHUNTER_WEEKLY_RECOMMENDATION_CANDIDATE_PAGE_SIZE=200
JOBHUNTER_WEEKLY_RECOMMENDATION_MAX_CANDIDATES=2000
JOBHUNTER_LOG_CLEANUP_ENABLED=false
JOBHUNTER_LOG_CLEANUP_CRON=0 0 3 * * *
JOBHUNTER_LOG_CLEANUP_ZONE=Asia/Ho_Chi_Minh
JOBHUNTER_LOG_RETENTION_DAYS=7
JOBHUNTER_LOG_CLEANUP_PATHS=logs
JOBHUNTER_LOG_CLEANUP_PATTERNS=*.log,*.log.*
JOBHUNTER_LOG_CLEANUP_MAX_SCAN_FILES=10000
JOBHUNTER_LOG_CLEANUP_MANUAL_TRIGGER_ENABLED=false
JOBHUNTER_LOG_CLEANUP_MANUAL_TRIGGER_PROFILES=dev,local,docker,test
# Swagger / OpenAPI
JOBHUNTER_SWAGGER_ENABLED=true
# AI provider (optional)
AI_PROVIDER=auto
OPENAI_API_KEY=
OPENAI_MODEL=gpt-4.1-mini
OPENAI_BASE_URL=https://api.openai.com/v1
OPEN_API_KEY=
GEMINI_API_KEY=
GEMINI_MODEL=gemini-2.5-flash
GEMINI_BASE_URL=https://generativelanguage.googleapis.com/v1beta