init push
This commit is contained in:
248
.env.local.example
Normal file
248
.env.local.example
Normal file
@@ -0,0 +1,248 @@
|
||||
# Copy this to .env.local and fill in your values.
|
||||
# Never commit .env.local.
|
||||
|
||||
# App
|
||||
APP_ENV=local
|
||||
|
||||
# HTTP
|
||||
HTTP_PORT=8080
|
||||
HTTP_BODY_LIMIT=4194304
|
||||
HTTP_READ_TIMEOUT=10s
|
||||
HTTP_WRITE_TIMEOUT=15s
|
||||
HTTP_IDLE_TIMEOUT=60s
|
||||
HTTP_CORS_ALLOW_ORIGINS=http://localhost:3000,http://127.0.0.1:3000,http://localhost:5173,http://127.0.0.1:5173
|
||||
HTTP_CORS_ALLOW_METHODS=GET,POST,PUT,PATCH,DELETE,OPTIONS,HEAD
|
||||
HTTP_CORS_ALLOW_HEADERS=Origin,Content-Type,Accept,Authorization,X-Requested-With,X-Pin-Verification-Token,X-Device-Type
|
||||
HTTP_CORS_EXPOSE_HEADERS=X-Request-ID
|
||||
HTTP_CORS_ALLOW_CREDENTIALS=true
|
||||
HTTP_CORS_MAX_AGE=300
|
||||
HTTP_REQUEST_TIMEOUT=30s
|
||||
HTTP_REQUEST_TIMEOUT_OVERRIDES=
|
||||
HTTP_SHUTDOWN_TIMEOUT=30s
|
||||
HTTP_RATE_LIMIT_MAX=120
|
||||
HTTP_RATE_LIMIT_WINDOW=1m
|
||||
HTTP_SECURITY_HSTS_MAX_AGE=0
|
||||
|
||||
# MySQL
|
||||
MYSQL_DSN="root:password@tcp(localhost:3306)/fm_dev?parseTime=true"
|
||||
MYSQL_MAX_OPEN_CONNS=25
|
||||
MYSQL_MAX_IDLE_CONNS=10
|
||||
MYSQL_CONN_MAX_LIFETIME=5m
|
||||
MYSQL_CONN_MAX_IDLE_TIME=2m
|
||||
|
||||
# Logging
|
||||
LOG_LEVEL=debug
|
||||
LOG_FORMAT=json
|
||||
|
||||
# Audit
|
||||
AUDIT_LOG_QUEUE_SIZE=1024
|
||||
AUDIT_LOG_WORKERS=2
|
||||
|
||||
# Email
|
||||
EMAIL_PROVIDER=mock
|
||||
EMAIL_MOCK_DIR=.local/emails
|
||||
|
||||
# Circuit Breaker (default policy)
|
||||
CB_DEFAULT_ENABLED=true
|
||||
CB_DEFAULT_MAX_REQUESTS=1
|
||||
CB_DEFAULT_INTERVAL=1m
|
||||
CB_DEFAULT_BUCKET_PERIOD=10s
|
||||
CB_DEFAULT_TIMEOUT=30s
|
||||
CB_DEFAULT_MIN_REQUESTS=5
|
||||
CB_DEFAULT_FAILURE_RATIO=0.6
|
||||
CB_DEFAULT_CONSECUTIVE_FAILURES=5
|
||||
CB_MICROSOFT_SSO_ENABLED=true
|
||||
CB_MICROSOFT_SSO_MAX_REQUESTS=1
|
||||
CB_MICROSOFT_SSO_INTERVAL=1m
|
||||
CB_MICROSOFT_SSO_BUCKET_PERIOD=10s
|
||||
CB_MICROSOFT_SSO_TIMEOUT=30s
|
||||
CB_MICROSOFT_SSO_MIN_REQUESTS=5
|
||||
CB_MICROSOFT_SSO_FAILURE_RATIO=0.6
|
||||
CB_MICROSOFT_SSO_CONSECUTIVE_FAILURES=5
|
||||
CB_SES_ENABLED=true
|
||||
CB_SES_MAX_REQUESTS=1
|
||||
CB_SES_INTERVAL=1m
|
||||
CB_SES_BUCKET_PERIOD=10s
|
||||
CB_SES_TIMEOUT=30s
|
||||
CB_SES_MIN_REQUESTS=5
|
||||
CB_SES_FAILURE_RATIO=0.6
|
||||
CB_SES_CONSECUTIVE_FAILURES=5
|
||||
CB_SQS_ENABLED=true
|
||||
CB_SQS_MAX_REQUESTS=1
|
||||
CB_SQS_INTERVAL=1m
|
||||
CB_SQS_BUCKET_PERIOD=10s
|
||||
CB_SQS_TIMEOUT=30s
|
||||
CB_SQS_MIN_REQUESTS=5
|
||||
CB_SQS_FAILURE_RATIO=0.6
|
||||
CB_SQS_CONSECUTIVE_FAILURES=5
|
||||
|
||||
# Auth
|
||||
AUTH_PASSWORD_PEPPER=change-me-local-pepper
|
||||
AUTH_IP_ENCRYPTION_KEY=change-me-local-ip-key
|
||||
AUTH_DEFAULT_ROLE=user
|
||||
AUTH_DISABLE_REGISTER=false
|
||||
AUTH_HASH_TIME=1
|
||||
AUTH_HASH_MEMORY_KB=65536
|
||||
AUTH_HASH_THREADS=4
|
||||
AUTH_HASH_KEY_LEN=32
|
||||
AUTH_EMAIL_VERIFY_TTL=24h
|
||||
AUTH_EMAIL_VERIFY_URL=http://localhost:3000/verify-email
|
||||
AUTH_INVITE_TTL=24h
|
||||
AUTH_SET_PASSWORD_URL=http://localhost:3000/set-password
|
||||
AUTH_PASSWORD_RESET_TTL=20m
|
||||
AUTH_PASSWORD_RESET_URL=http://localhost:3000/reset-password
|
||||
AUTH_FORGOT_PASSWORD_EMAIL_COOLDOWN=2m
|
||||
AUTH_FORGOT_PASSWORD_MIN_DURATION=150ms
|
||||
AUTH_FORGOT_PASSWORD_IP_RATE_MAX=10
|
||||
AUTH_FORGOT_PASSWORD_IP_RATE_WINDOW=15m
|
||||
AUTH_SECURITY_PIN_RESET_TTL=20m
|
||||
AUTH_SECURITY_PIN_RESET_URL=http://localhost:3000/reset-pin
|
||||
AUTH_FORGOT_SECURITY_PIN_EMAIL_COOLDOWN=2m
|
||||
AUTH_FORGOT_SECURITY_PIN_MIN_DURATION=150ms
|
||||
AUTH_SECURITY_PIN_MAX_ATTEMPTS=5
|
||||
AUTH_SECURITY_PIN_LOCK_DURATION=0s
|
||||
AUTH_SECURITY_PIN_ACTION_TOKEN_TTL=5m
|
||||
|
||||
AUTH_JWT_COOKIE_DOMAIN=.mybit.co.id
|
||||
|
||||
# JWT
|
||||
AUTH_JWT_ACCESS_SECRET=change-me-local-access-secret
|
||||
AUTH_JWT_REFRESH_SECRET=change-me-local-refresh-secret
|
||||
AUTH_JWT_ACCESS_TTL=10m
|
||||
AUTH_JWT_REFRESH_TTL=1h
|
||||
AUTH_JWT_REFRESH_TOTP_TTL=1h
|
||||
AUTH_JWT_COOKIE_SECURE=false
|
||||
AUTH_JWT_COOKIE_SAMESITE=Lax
|
||||
AUTH_JWT_ACCESS_COOKIE=wucher_at
|
||||
AUTH_JWT_REFRESH_COOKIE=wucher_rt
|
||||
|
||||
# TOTP
|
||||
AUTH_TOTP_CHALLENGE_TTL=5m
|
||||
TOTP_ISSUER=Wucher
|
||||
TOTP_SECRET_KEY=change-me-local-totp-secret
|
||||
|
||||
# SSO
|
||||
AUTH_SSO_STATE_TTL=10m
|
||||
AUTH_SSO_SUCCESS_REDIRECT=http://localhost:3000/sso/callback
|
||||
|
||||
# WebAuthn
|
||||
AUTH_WEBAUTHN_RP_ID=localhost
|
||||
AUTH_WEBAUTHN_RP_DISPLAY_NAME=Wucher
|
||||
AUTH_WEBAUTHN_RP_ORIGINS=http://localhost:3000
|
||||
AUTH_WEBAUTHN_CHALLENGE_TTL=5m
|
||||
|
||||
# Microsoft SSO
|
||||
MS_ENTRA_TENANT_ID=
|
||||
MS_ENTRA_CLIENT_ID=
|
||||
MS_ENTRA_CLIENT_SECRET=
|
||||
MS_ENTRA_REDIRECT_URL=http://localhost:8080/v1/auth/sso/microsoft/callback
|
||||
MS_ENTRA_AUTHORITY=https://login.microsoftonline.com/
|
||||
MS_ENTRA_SCOPES=openid,profile,email,offline_access,User.Read
|
||||
|
||||
# Queue
|
||||
QUEUE_MESSAGE_SCHEMA_VERSION=v2
|
||||
QUEUE_ENABLE_LEGACY_PAYLOAD_FALLBACK=true
|
||||
QUEUE_IDEMPOTENCY_KEY_PREFIX=queue:idempotency:email:
|
||||
QUEUE_IDEMPOTENCY_TTL=24h
|
||||
QUEUE_PROCESSING_TTL=15m
|
||||
QUEUE_WORKER_CONCURRENCY=4
|
||||
QUEUE_WORKER_MAX_BATCH_SIZE=10
|
||||
QUEUE_WORKER_PROCESS_TIMEOUT=30s
|
||||
QUEUE_WORKER_SHUTDOWN_TIMEOUT=30s
|
||||
QUEUE_WORKER_BACKOFF_MIN=1s
|
||||
QUEUE_WORKER_BACKOFF_MAX=5m
|
||||
QUEUE_WORKER_PERMANENT_FAILURE_DELAY=30s
|
||||
QUEUE_WORKER_MONITOR_ADDR=127.0.0.1:9090
|
||||
QUEUE_WORKER_HEALTH_ERROR_THRESHOLD=3
|
||||
QUEUE_WORKER_DEPTH_POLL_INTERVAL=30s
|
||||
QUEUE_OUTBOX_ENABLED=true
|
||||
QUEUE_OUTBOX_POLL_INTERVAL=1s
|
||||
QUEUE_OUTBOX_BATCH_SIZE=10
|
||||
QUEUE_OUTBOX_DISPATCH_TIMEOUT=10s
|
||||
QUEUE_OUTBOX_LOCK_TTL=1m
|
||||
QUEUE_OUTBOX_MAX_ATTEMPTS=20
|
||||
|
||||
# File Queue
|
||||
FILE_QUEUE_MESSAGE_SCHEMA_VERSION=v1
|
||||
FILE_QUEUE_IDEMPOTENCY_KEY_PREFIX=queue:idempotency:file:
|
||||
FILE_QUEUE_IDEMPOTENCY_TTL=24h
|
||||
FILE_QUEUE_PROCESSING_TTL=15m
|
||||
FILE_QUEUE_WORKER_CONCURRENCY=4
|
||||
FILE_QUEUE_WORKER_MAX_BATCH_SIZE=10
|
||||
FILE_QUEUE_WORKER_PROCESS_TIMEOUT=30s
|
||||
FILE_QUEUE_WORKER_SHUTDOWN_TIMEOUT=30s
|
||||
FILE_QUEUE_WORKER_BACKOFF_MIN=1s
|
||||
FILE_QUEUE_WORKER_BACKOFF_MAX=5m
|
||||
FILE_QUEUE_WORKER_PERMANENT_FAILURE_DELAY=30s
|
||||
FILE_QUEUE_WORKER_MONITOR_ADDR=127.0.0.1:9091
|
||||
FILE_QUEUE_WORKER_HEALTH_ERROR_THRESHOLD=3
|
||||
FILE_QUEUE_WORKER_DEPTH_POLL_INTERVAL=30s
|
||||
FILE_QUEUE_OUTBOX_ENABLED=true
|
||||
FILE_QUEUE_OUTBOX_POLL_INTERVAL=1s
|
||||
FILE_QUEUE_OUTBOX_BATCH_SIZE=10
|
||||
FILE_QUEUE_OUTBOX_DISPATCH_TIMEOUT=10s
|
||||
FILE_QUEUE_OUTBOX_LOCK_TTL=1m
|
||||
FILE_QUEUE_OUTBOX_MAX_ATTEMPTS=20
|
||||
|
||||
# AWS
|
||||
AWS_REGION=us-east-1
|
||||
AWS_ACCESS_KEY_ID=test
|
||||
AWS_SECRET_ACCESS_KEY=test
|
||||
|
||||
# SQS (local uses localstack or similar)
|
||||
SQS_ENDPOINT=http://localhost:4566
|
||||
SQS_ALLOW_INSECURE_ENDPOINT=true
|
||||
SQS_QUEUE_URL=http://localhost:4566/000000000000/fm-email-queue
|
||||
SQS_QUEUE_TYPE=standard
|
||||
SQS_MESSAGE_GROUP_ID=email
|
||||
SQS_MAX_MESSAGES=10
|
||||
SQS_WAIT_TIME_SECONDS=20
|
||||
SQS_VISIBILITY_TIMEOUT=60s
|
||||
|
||||
# SQS (file queue, local uses localstack or similar)
|
||||
FILE_SQS_REGION=us-east-1
|
||||
FILE_SQS_ENDPOINT=http://localhost:4566
|
||||
FILE_SQS_ALLOW_INSECURE_ENDPOINT=true
|
||||
FILE_SQS_QUEUE_URL=http://localhost:4566/000000000000/fm-file-queue
|
||||
FILE_SQS_QUEUE_TYPE=standard
|
||||
FILE_SQS_MESSAGE_GROUP_ID=file-processing
|
||||
FILE_SQS_MAX_MESSAGES=10
|
||||
FILE_SQS_WAIT_TIME_SECONDS=20
|
||||
FILE_SQS_VISIBILITY_TIMEOUT=60s
|
||||
|
||||
# SES (local uses localstack or similar)
|
||||
SES_REGION=us-east-1
|
||||
SES_FROM=noreply@localhost
|
||||
SES_CONFIGURATION_SET=
|
||||
SES_SEND_TIMEOUT=10s
|
||||
SES_ENDPOINT=http://localhost:4566
|
||||
SES_ALLOW_INSECURE_ENDPOINT=true
|
||||
|
||||
# File Storage (local uses localstack or similar)
|
||||
FILE_STORAGE_PROVIDER=s3
|
||||
FILE_S3_BUCKET=fm-local
|
||||
FILE_S3_REGION=us-east-1
|
||||
FILE_S3_ENDPOINT=http://localhost:4566
|
||||
FILE_S3_FORCE_PATH_STYLE=true
|
||||
FILE_S3_ALLOW_INSECURE_ENDPOINT=true
|
||||
FILE_S3_AUTO_CREATE_BUCKET=true
|
||||
FILE_OBJECT_KEY_PREFIX=fm/objects
|
||||
FILE_S3_PRESIGN_PUT_TTL=15m
|
||||
FILE_S3_PRESIGN_GET_TTL=15m
|
||||
FILE_MANAGER_UPLOAD_MAX_FILE_SIZE_BYTES=4194304
|
||||
FILE_MANAGER_UPLOAD_ALLOWED_MIME_TYPES=image/png,image/jpeg,application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel
|
||||
FILE_MANAGER_UPLOAD_ALLOWED_EXTENSIONS=png,jpg,jpeg,pdf,xlsx,xls
|
||||
FILE_MANAGER_UPLOAD_ALLOW_EMPTY_FILE=false
|
||||
FILE_MANAGER_UPLOAD_MAX_FILENAME_LENGTH=255
|
||||
|
||||
FILE_MANAGER_TRASH_AUTO_PURGE_ENABLED=true
|
||||
FILE_MANAGER_TRASH_RETENTION=720h
|
||||
FILE_MANAGER_TRASH_AUTO_PURGE_INTERVAL=1h
|
||||
FILE_MANAGER_TRASH_AUTO_PURGE_BATCH_SIZE=200
|
||||
|
||||
ENABLE_S3_TAGGING=true
|
||||
ENABLE_FILE_CLEANUP_JOB=false
|
||||
TEMP_FILE_TTL_DAYS=7
|
||||
ORPHAN_GRACE_PERIOD_DAYS=30
|
||||
FILE_CLEANUP_BATCH_SIZE=100
|
||||
FILE_CLEANUP_DRY_RUN=true
|
||||
Reference in New Issue
Block a user