Files
Hamza-Ayed 2cf5c63a1e docs(env): document ENCRYPTION_MODE, BLIND_INDEX_PEPPER, and one-time migration SRC_DB_* vars
These were required on the server to run the v2 migration and switch
write mode to GCM, but .env.example didn't mention them — anyone
provisioning a fresh environment from this file alone would hit the
same "table doesn't exist" / "access denied" surprises we just debugged.
2026-07-29 17:32:28 +03:00

177 lines
8.1 KiB
Bash

# ============================================================
# Siro Docker Environment Variables
# ============================================================
# --- 1. Core Settings ---
PHP_VERSION=8.2
HTTP_PORT=8181
APP_DOMAIN=jordan-siro.intaleqapp.com
APP_ISSUER=SiroApp
APP_DEBUG=true
APP_COUNTRY=Jordan
APP_CURRENCY=JOD
# --- 2. Databases (Hosts must be 'mysql' in Docker) ---
MYSQL_ROOT_PASSWORD=3w71Qacjl3kh1pOgJUeD5jRBnG3jRVpf
DB_PAYMENT_HOST=mysql
DB_PAYMENT_NAME=paymentDB
DB_PAYMENT_USER=root
DB_PAYMENT_PASS=3w71Qacjl3kh1pOgJUeD5jRBnG3jRVpf
DB_PRIMARY_HOST_V2=mysql
DB_PRIMARY_NAME_V2=mainDB
DB_PRIMARY_USER_V2=intaleqapp-jordan-siro
DB_PRIMARY_PASS_V2=7B7skfibrexQrGCUG1Y8
DB_PRIMARY_HOST=mysql
DB_PRIMARY_NAME=mainDB
DB_PRIMARY_USER=intaleqapp-jordan-siro
DB_PRIMARY_PASS=7B7skfibrexQrGCUG1Y8
DB_TRACKING_HOST=mysql
DB_TRACKING_NAME=locationDB
DB_TRACKING_USER=intaleqLocation
DB_TRACKING_PASS=9otdMyiExMTXwnoA32sP
DB_RIDE_HOST=mysql
DB_RIDE_NAME=rideDB
DB_RIDE_USER=intaleq-rides
DB_RIDE_PASS=0bHHMALEj4sqSmdT0avT
DB_TRANSIT_HOST=mysql
DB_TRANSIT_PORT=3306
DB_TRANSIT_NAME=transitDB
DB_TRANSIT_USER=siroTransitUser
DB_TRANSIT_PASS=eZiDYxCJ2yyGfC32zG0Z
# --- 3. Redis ---
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_LOCATION_HOST=redis
REDIS_LOCATION_PORT=6379
REDIS_MAIN_HOST=redis
REDIS_MAIN_PORT=6379
REDIS_MAIN_PASSWORD=
# --- 4. Internal Sockets (Docker Network Names) ---
LOCATION_SERVER_URL=http://socket_driver:2021
RIDE_SOCKET_URL=http://socket_passenger:3031
# ⚠️ إجباري في Docker: بدونه يستخدم driver_socket.php الافتراضي 127.0.0.1:3031
# وهو داخل حاوية socket_driver يشير لنفسها، فلا يصل الراكب أي تحديث موقع.
PASSENGER_SOCKET_INTERNAL_URL=http://socket_passenger:3031
# --- 5. External Sockets & URLs ---
LOCATION_SOCKET_URL=http://socket_driver:2021
PASSENGER_SOCKET_URL=http://socket_passenger:3031
LOCATION_API_URL=http://nginx/loction_server/api_get_nearby.php
WALLET_SERVER_JORDAN=http://nginx
WALLET_SERVER_EGYPT=http://nginx
WALLET_SERVER_SYRIA=http://nginx
# --- 6. JWT, Encryption & Secrets ---
# JWT_SECRET_KEY=
# JWT_SECRET=
# INTERNAL_KEY=
TRACKING_SECRET_SALT=RaIt3bznBXIHJAtpaBz7JHFwcec9JFyzOXaoIZKG
secretSaltParent=Q4g2XFGMY2aSTp1kq6RaIt3bznBXIHJAtpaBz7JHFwcec
MIGRATION_ADMIN_KEY=iuyweiruinakjbfkajkjlkmalkcxnlahd
FP_PEPPER=cd0b94f349c292bf93c63e798b903bb4b3b3738a049654441d6524ba603d614147fbc24b2721090d713d4fe3fbe833985c9a4473233963ac544045da5cd4wef
SECRET_KEY_HMAC=WnzEwFNArO0YlTapvfhtmguKWsXJSKqg_NZSjHBYVXMZK1yUK88SobdckV0KuPaBh0c2721090d713d4fe3fbe833985c9a4473233963ac544045da5cd41bd5
SECRET_KEY=cd0b94f349c292bf93c63e798b903bb4b3b3738a049654441d6524ba603d614147fbc24b2721090d713d4fe3fbe833985c9a4473233963ac544045da5cd41bd5
passwordnewpassenger=$2y$10$0WYS/2Fz9BTtoyCbTusudOG9JgTO3DqCPWBhS2Cf9gIu3H9KoSZKC
initializationVector=abcdefghijklmnop
# وضع كتابة التشفير — 'gcm' (الافتراضي الحالي في الإنتاج) أو 'cbc' (قديم/توافقية).
# القراءة تدعم الصيغتين دائماً بغضّ النظر عن هذه القيمة.
ENCRYPTION_MODE=gcm
# مفتاح HMAC لفهرس البحث الأعمى فوق الحقول المشفّرة (core/Security/BlindIndex.php).
# ولّده بـ: openssl rand -hex 32 — ولا تغيّره بعد أول استخدام إلا مع إعادة بناء
# كل الفهارس (backfill_blind_index.php --force)، وإلا يتوقف كل بحث/تسجيل دخول.
BLIND_INDEX_PEPPER=
# ⚠️ متغيّرات مؤقتة لمرة واحدة — تُستخدم فقط عند تشغيل
# backend/scripts/migrate_v2_reencrypt.php (ترحيل قاعدة قديمة إلى هذا المخطط).
# لا علاقة لها بتشغيل التطبيق العادي؛ اتركها فارغة إن لم تكن تُرحّل بيانات.
SRC_DB_HOST=mysql
SRC_DB_NAME=
SRC_DB_USER=
SRC_DB_PASS=
# ⚠️ تحذير مسارات الملفات السرية:
# في اللايف كانت هذه الملفات خارج مجلد htdocs. في الدوكر يجب وضع هذه الملفات داخل مجلد منفصل لتبقى آمنة.
# لقد قمت ببرمجة الدوكر ليقرأ مجلد docker/keys ويربطه بالمسار /keys/ المعزول تماماً عن الويب (لأن مسار الويب هو /var/www).
# (عليك إنشاء المجلد docker/keys ونسخ المفاتيح إليه)
SECRET_KEY_PATH=/keys/.secret_key
SECRET_KEY_PAY_PATH=/keys/.secret_key_pay
INTERNAL_SOCKET_KEY_PATH=/keys/.internal_socket_key
JWT_SECRET_KEY_PATH=/keys/.secret_key
WALLET_SECRET_KEY_PATH=/keys/.secret_key_pay
ENCRYPTION_KEY_PATH=/keys/.enckey
PAYMENT_INTERNAL_KEY_PATH=/keys/.internal_socket_key
# --- 7. Third-Party APIs ---
GEMINI_API_KEY=AIzaSyDHp0yXCGWqnd4ynlCCWzDz9Un1EJOKeW8
SMS_API_ENDPOINT=https://sms.kazumi.me/api/sms/send-sms
VOICE_CALL_API_KEY=405e47af5fff47a4b2f5e6acb7ec8960e4d7fe0d1cf3544552b978231f864285
HERE_API0=g_WNUb5L-7-F8oHpUmgIzH7ETeH9xZ8RwGG9_G8zX9A
HERE_API=-u3ySR74FH46wS-7IP59BP-Ih6pTx47CwKx_aQw0Sp4
keyOfApp=nqryjp@1737wqnmqqsjyzjujC1jYRSgh
PAYMENT_KEY=f4b29e139e7287109bcdd755882a3002
payMobApikey=S40PAVPQiTp+nOL4UQ4g2XFGMY2aSTp1kq6RaIt3bznBXIHJAtpaBz7JHFwcec9JFyzOXaoIZKGPfE5jyfnIlj/A90Kes1qwmwJdOKz0gINtVZcgX9dd0KIgiE34RC5eRn9co3PFpGENlxXUVZOXkQ5c00tBRsOIRXSedSs8L4u+YSQwfMQZLOX18vrLWh4yEGQPLLm3cUglC65DmkyiLPvwdBST53eFlqj4GD/L5qgBLw8zPPnUMZ2VIvAsTKIzLBxq3QmvSzU1bZ6gqscEHwwwDjfxD6j0Z8hlRgUfrOfVgGD9prY2SFzdeZxRSMqjBuwPrva+51/OxT4yf3uxozJs+HEVhl5AJ2CsSZ+k4Po=
PASSWORDPAYMOB=g@nkD2#99!hD_.wXrXlBl
PAYMOBOUTCLIENTSECRET=xyjjRlahJM0Xc38WjApCOh8bvgL9slFpNdM9YeCu9AhLqboKMPtmSvc2N9O4tXxFLV2JAV6stBSTAGFGCVubGe6MNpc7MzJnZ3SiT6GpavBoCLWkUvVbdSDaM0zHvuBOXrXlBl
PAYMOBOUTCLIENT_ID=Z05ut48dVkS2gI2zenFFcKsfDKfHAU0WELqKyJ0LXrXlBl
PayPalClientIdLive=QZFjAoZfGtngNserll6r3cC56Xl1sVLQkn5dMbyebhzJY59EQ3hz7YxaEqEDYPTUFcQWqvePaQ5UJJVRXrXlBl
SMSPASSWORDEGYPT=J)Vh=qb/@MXrXlBl
CLAUDAISEFER=zg-qbc-qvo39-vCB-WnzEwFNArO0YlTapvfhtmguKWsXJSKqg_NZSjHBYVXMZK1yUK88SobdckV0KuPaBh0c_WHtGsRO_439PBk-e2QqgkQQXrXlBl
FIREBASE_SERVICE_ACCOUNT_PATH=/var/www/backend/keys/service-account.json
RASEEL_DRIVER_INSTANCE_ID=686510D4C41E0
RASEEL_DRIVER_ACCESS_TOKEN=68617b9b8fe53
# --- 8. App Signatures & Versions ---
APP_SIGNATURE_SERVICE_DEBUG=08c3a281699d01bda0473c5dd33536f89dec2f77da8d45c3ba5285959066fa0e
APP_SIGNATURE_SERVICE_RELEASE=4f10b4e929e05e0a3eaeb0314cc13adbcbe6ffdf6af585fc68fec1e4b6296b6f
APP_SIGNATURE_SERVICE_IOS=com.example.serviceIntaleq
# --- 9. Nabeh & Transit & Commisions ---
NABEH_EMAIL=hamza@test.com
NABEH_PASSWORD=Test1234!
NABEH_API_KEY=siro_integration_key_789
NABEH_OTP_APP_KEY=f3a9e7c1b8d5f2a4c6e9b1d3f5a7c9e1b3d5f7a9c1e3b5d7f9a1c3e5b7d9f1
VITE_API_BASE=https://jordan-siro.intaleqapp.com/backend/transit
TRANSIT_STUDENT_ID_KEY=zH34tS6xMMSamq6uqv1WZWlDrmjAbnMk
TRANSIT_ADMIN_ORIGINS=https://transit.siromove.com,https://admin.siromove.com
APP_DEEP_LINK_BASE=https://siromove.com/driver/transit-activate
SIRO_COMMISSION_JO=0.15
SIRO_COMMISSION_SY=0.12
SIRO_COMMISSION_EG=0.10
SIRO_COMMISSION_IQ=0.14
# --- 10. Admin & Access ---
ADMIN_TOOL_IPS=92.241.36.211,92.241.36.165,92.241.37.3
ALLOWED_UPLOAD_HOST=siromove.com
ALLOWED_TESTER_EMAILS=driver_tester@siromove.com,passenger_tester@siromove.com
# ⚠️ لازم يغطّي كل قيمة في القسم 4/5 أعلاه: isAllowedSocketUrl() تعمل
# str_starts_with، وأي عنوان غير مغطّى تُسقَط رسائله (بلا أي أثر قبل هذا الإصلاح).
# أسماء حاويات Docker إجبارية هنا — لا تحذفها واستبدلها بالـ IP فقط.
ALLOWED_SOCKET_URLS=http://socket_driver,http://socket_passenger,http://nginx,http://188.68.36.205:2021,http://188.68.36.205:3031,https://location.intaleq.xyz
ALLOWED_ORIGIN=https://siromove.com
ADMIN_PHONE_NUMBERS=963992952235,963942542053,962772735902
SERVICE_PHONE1=963952475740
SERVICE_PHONE2=963952475742
TRIPZ_SMTP_PASSWORD=malDEV@2101
# --- 11. Platform Access Keys ---
allowed1=passenger-app:android
allowed2=passenger-app:ios
allowedDriver1=driver-app:android
allowedDriver2=driver-app:ios
allowedService1=service-app:android
allowedService2=service-app:ios
allowedWallet1=wallet-app:android
allowedWallet2=wallet-app:ios