-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrender.yaml
More file actions
250 lines (231 loc) · 12.7 KB
/
Copy pathrender.yaml
File metadata and controls
250 lines (231 loc) · 12.7 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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
services:
# ─────────────────────────────────────────────────────────────
# SERVICE WEB — Application Django principale avec Daphne
# ─────────────────────────────────────────────────────────────
- type: web
name: academie-numerique-web
env: python
region: frankfurt
plan: pro
buildCommand: bash render-build.sh
startCommand: daphne -b 0.0.0.0 -p 10000 academie_numerique.asgi:application
healthCheckPath: /health/
numInstances: 1
envVars:
# ════════════════════════════════════════════════════════════
# DJANGO — Configuration de base
# ════════════════════════════════════════════════════════════
- key: DJANGO_SECRET_KEY
generateValue: true
- key: DEBUG
value: "False"
- key: ALLOWED_HOSTS
value: "*.onrender.com,votre-domaine.com"
- key: RENDER_EXTERNAL_HOSTNAME
scope: run
- key: SITE_URL
value: "https://academie-numerique.onrender.com"
# ════════════════════════════════════════════════════════════
# BASE DE DONNÉES — PostgreSQL (Auto-lié)
# ════════════════════════════════════════════════════════════
- key: DB_ENGINE
value: postgresql
- key: DATABASE_URL
fromDatabase:
name: academie-db
property: connectionString
# ════════════════════════════════════════════════════════════
# REDIS — Cache & Session (Auto-lié)
# ════════════════════════════════════════════════════════════
- key: REDIS_URL
fromService:
type: redis
name: academie-redis
property: connectionString
- key: CHANNEL_LAYERS_REDIS
fromService:
type: redis
name: academie-redis
property: connectionString
# ════════════════════════════════════════════════════════════
# IA PROVIDERS — Groq + Fallbacks
# ════════════════════════════════════════════════════════════
- key: AI_PROVIDER
value: groq
- key: GROQ_API_KEY
value: "ENTREZ_VOTRE_CLE_GROQ_ICI"
- key: GEMINI_API_KEY
value: "OPTIONNEL_GEMINI"
- key: MISTRAL_API_KEY
value: "OPTIONNEL_MISTRAL"
- key: DEEPSEEK_API_KEY
value: "OPTIONNEL_DEEPSEEK"
# ════════════════════════════════════════════════════════════
# NVIDIA OCR — Reconnaissance optique des copies scannées
# ════════════════════════════════════════════════════════════
- key: NVIDIA_API_KEY
value: "ENTREZ_VOTRE_CLE_NVIDIA_ICI"
- key: NVIDIA_API_BASE_URL
value: "https://integrate.api.nvidia.com/v1"
- key: NVIDIA_MODEL
value: "nvidia/nemotron-4-340b-instruct"
# ════════════════════════════════════════════════════════════
# EMAIL — Resend (Gratuit 3000 emails/jour)
# ════════════════════════════════════════════════════════════
- key: RESEND_API_KEY
value: "ENTREZ_VOTRE_CLE_RESEND_ICI"
- key: DEFAULT_FROM_EMAIL
value: "Académie Numérique <noreply@academie-numerique.com>"
# ════════════════════════════════════════════════════════════
# PAIEMENTS — FedaPay (Mobile Money Bénin)
# ════════════════════════════════════════════════════════════
- key: FEDAPAY_ENVIRONMENT
value: "production"
- key: FEDAPAY_PUBLIC_KEY
value: "ENTREZ_VOTRE_CLE_PUBLIQUE_FEDAPAY_ICI"
- key: FEDAPAY_SECRET_KEY
value: "ENTREZ_VOTRE_CLE_SECRETE_FEDAPAY_ICI"
- key: FEDAPAY_WEBHOOK_SECRET
value: "ENTREZ_VOTRE_SECRET_WEBHOOK_FEDAPAY_ICI"
- key: PRIX_CORRECTION_UNITAIRE
value: "500"
# ════════════════════════════════════════════════════════════
# STOCKAGE FICHIERS — Cloudinary (Gratuit 25GB)
# ════════════════════════════════════════════════════════════
- key: USE_CLOUDINARY_STORAGE
value: "True"
- key: CLOUDINARY_URL
value: "ENTREZ_VOTRE_CLOUDINARY_URL_ICI"
# ════════════════════════════════════════════════════════════
# MOTS DE PASSE DES RÔLES — À changer après déploiement!
# ════════════════════════════════════════════════════════════
- key: ROLE_PASSWORD_ADMIN
value: "CHANGEZ_CE_MOT_DE_PASSE_ADMIN"
- key: ROLE_PASSWORD_CP
value: "CHANGEZ_CE_MOT_DE_PASSE_CP"
- key: ROLE_PASSWORD_PROF
value: "CHANGEZ_CE_MOT_DE_PASSE_PROF"
# ════════════════════════════════════════════════════════════
# CORS — Cross-Origin Resource Sharing
# ════════════════════════════════════════════════════════════
- key: CORS_ALLOW_ALL_ORIGINS
value: "False"
- key: CORS_ALLOWED_ORIGINS
value: "https://academie-numerique.onrender.com"
- key: CORS_ALLOW_CREDENTIALS
value: "True"
# ════════════════════════════════════════════════════════════
# SÉCURITÉ HTTPS — À activer en production
# ════════════════════════════════════════════════════════════
- key: SECURE_SSL_REDIRECT
value: "True"
- key: SESSION_COOKIE_SECURE
value: "True"
- key: CSRF_COOKIE_SECURE
value: "True"
- key: SECURE_HSTS_SECONDS
value: "31536000"
- key: SECURE_HSTS_INCLUDE_SUBDOMAINS
value: "True"
- key: SECURE_HSTS_PRELOAD
value: "True"
# ════════════════════════════════════════════════════════════
# SESSIONS & COOKIES
# ════════════════════════════════════════════════════════════
- key: SESSION_COOKIE_AGE
value: "604800"
- key: SESSION_COOKIE_HTTPONLY
value: "True"
# ════════════════════════════════════════════════════════════
# LOGGING & MONITORING
# ════════════════════════════════════════════════════════════
- key: LOG_LEVEL
value: "info"
# ─────────────────────────────────────────────────────────────
# WORKER — Celery pour les tâches asynchrones
# ─────────────────────────────────────────────────────────────
- type: worker
name: academie-celery-worker
env: python
plan: pro
buildCommand: pip install -r requirements.txt
startCommand: celery -A academie_numerique worker -l info --concurrency=4
numInstances: 1
envVars:
- key: DJANGO_SECRET_KEY
fromService:
type: web
name: academie-numerique-web
envVarKey: DJANGO_SECRET_KEY
- key: DATABASE_URL
fromDatabase:
name: academie-db
property: connectionString
- key: REDIS_URL
fromService:
type: redis
name: academie-redis
property: connectionString
- key: DEBUG
value: "False"
- key: AI_PROVIDER
value: groq
- key: GROQ_API_KEY
fromService:
type: web
name: academie-numerique-web
envVarKey: GROQ_API_KEY
- key: NVIDIA_API_KEY
fromService:
type: web
name: academie-numerique-web
envVarKey: NVIDIA_API_KEY
- key: CLOUDINARY_URL
fromService:
type: web
name: academie-numerique-web
envVarKey: CLOUDINARY_URL
# ─────────────────────────────────────────────────────────────
# BEAT — Celery Beat pour les tâches planifiées
# ─────────────────────────────────────────────────────────────
- type: worker
name: academie-celery-beat
env: python
plan: pro
buildCommand: pip install -r requirements.txt
startCommand: celery -A academie_numerique beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
numInstances: 1
envVars:
- key: DJANGO_SECRET_KEY
fromService:
type: web
name: academie-numerique-web
envVarKey: DJANGO_SECRET_KEY
- key: DATABASE_URL
fromDatabase:
name: academie-db
property: connectionString
- key: REDIS_URL
fromService:
type: redis
name: academie-redis
property: connectionString
- key: DEBUG
value: "False"
# ─────────────────────────────────────────────────────────────
# REDIS — Cache & Session Store
# ─────────────────────────────────────────────────────────────
- type: redis
name: academie-redis
plan: pro
ipAllowList: []
maxmemoryPolicy: allkeys-lru
# ───────────────────────────────────────────────────────────────
# BASES DE DONNÉES
# ───────────────────────────────────────────────────────────────
databases:
- name: academie-db
plan: pro
databaseName: academie_numerique
user: academie_user
postgresMajorVersion: "15"