http://s3 hosts redirect to https; AWS SDK cannot follow PUT redirects, which caused XML parse errors.
93 lines
3.1 KiB
Bash
93 lines
3.1 KiB
Bash
# Environment Configuration
|
|
|
|
NODE_ENV=development
|
|
PORT=3000
|
|
MONGO_URI=mongodb://localhost:27017/teaching_institution_db
|
|
|
|
# Authentication JWT
|
|
JWT_ACCESS_SECRET=your_super_secret_access_token_key_change_me
|
|
JWT_REFRESH_SECRET=your_super_secret_refresh_token_key_change_me
|
|
JWT_ACCESS_EXPIRES_IN=15m
|
|
JWT_REFRESH_EXPIRES_IN=7d
|
|
|
|
# Localization & File Uploads
|
|
DEFAULT_LANG=fa
|
|
CORS_ORIGIN=*
|
|
UPLOAD_PATH=uploads
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# S3-compatible object storage
|
|
# Local default: MinIO (docker-compose)
|
|
# Production (SeaweedFS): set SERVICE_* / AWS_* from your host, or set S3_* directly
|
|
# -----------------------------------------------------------------------------
|
|
# Local MinIO example:
|
|
S3_ENDPOINT=http://localhost:9000
|
|
S3_REGION=us-east-1
|
|
S3_ACCESS_KEY=minioadmin
|
|
S3_SECRET_KEY=minioadmin
|
|
|
|
# SeaweedFS live example (preferred aliases also work without S3_*):
|
|
# Use the public HTTPS URL (SERVICE_URL_S3). Never use plain http:// for the public host —
|
|
# Coolify/Traefik returns HTTP 307 and AWS SDK PutObject cannot follow it.
|
|
# Do NOT use :8333 from outside the SeaweedFS network (often refused).
|
|
# S3_ENDPOINT=https://s3.game-no.ir
|
|
# SERVICE_URL_S3=https://s3.game-no.ir
|
|
# SERVICE_USER_S3=...
|
|
# SERVICE_PASSWORD_S3=...
|
|
# AWS_ACCESS_KEY_ID=${SERVICE_USER_S3}
|
|
# AWS_SECRET_ACCESS_KEY=${SERVICE_PASSWORD_S3}
|
|
#
|
|
# File uploads: multer uses MEMORY storage and streams the buffer straight to the
|
|
# S3 temp bucket. No Coolify persistent volume / uploads folder is required for this.
|
|
|
|
S3_TEMP_BUCKET=temp
|
|
S3_CERTIFICATES_BUCKET=certificates
|
|
S3_DOCUMENTS_BUCKET=documents
|
|
S3_STORAGE_BUCKET=certificates
|
|
S3_FORCE_PATH_STYLE=true
|
|
SIGNED_URL_EXPIRES_IN=900
|
|
# Private by default — set true only if a bucket is publicly readable
|
|
S3_CERTIFICATES_PUBLIC=false
|
|
S3_DOCUMENTS_PUBLIC=false
|
|
# Optional public CDN/base URL used only when a bucket is public
|
|
S3_PUBLIC_BASE_URL=
|
|
|
|
# Optional SeaweedFS admin console (bucket management UI)
|
|
# SERVICE_URL_ADMIN=https://admin-s3.game-no.ir
|
|
# SERVICE_URL_ADMIN_23646=https://admin-s3.game-no.ir:23646
|
|
# SERVICE_USER_ADMIN=...
|
|
# SERVICE_PASSWORD_ADMIN=...
|
|
# SEAWEED_USER_ADMIN=${SERVICE_USER_ADMIN}
|
|
# SEAWEED_PASSWORD_ADMIN=${SERVICE_PASSWORD_ADMIN}
|
|
|
|
# SMTP Email Configuration
|
|
SMTP_HOST=smtp.mailtrap.io
|
|
SMTP_PORT=2525
|
|
SMTP_USER=your_smtp_user
|
|
SMTP_PASS=your_smtp_password
|
|
EMAIL_FROM=no-reply@institution.com
|
|
|
|
# SMS Provider Configuration (sms.ir)
|
|
SMS_ENABLED=false
|
|
SMS_PANEL_TOKEN=your_sms_ir_api_key
|
|
SMS_SENDER_NUMBER=10001000
|
|
# Template IDs from sms.ir panel (verify templates)
|
|
# Account created vars: username, password
|
|
SMS_TEMPLATE_ACCOUNT_CREATED=
|
|
# Class registered vars: className
|
|
SMS_TEMPLATE_CLASS_REGISTERED=
|
|
# Class reminder (30 min before) vars: className, time, place
|
|
SMS_TEMPLATE_CLASS_REMINDER=
|
|
|
|
# Bale Messenger Bot Token
|
|
BALE_BOT_TOKEN=mock_bale_bot_token
|
|
|
|
# SuperAdmin bootstrap (created automatically in production)
|
|
# Set SUPERADMIN_ENABLED=false to deactivate the bootstrap SuperAdmin and block login
|
|
SUPERADMIN_ENABLED=true
|
|
SUPERADMIN_USERNAME=
|
|
SUPERADMIN_PASSWORD=
|
|
SUPERADMIN_EMAIL=
|
|
SUPERADMIN_NATIONAL_ID=0000000000
|
|
SUPERADMIN_PHONE=09000000000
|