Skip to content

Configuration

This guide covers environment variables and configuration options for RecordPlatform.

Configuration Migration

Since v2.0, sensitive configurations (database credentials, Redis, email SMTP, RabbitMQ) have been migrated to Nacos configuration center. Only Nacos connection details and security keys (JWT_KEY) remain in environment variables. See Nacos Configuration Template for the complete configuration structure.

Environment Variables

Copy the example file and customize:

bash
cp .env.example .env
vim .env

Core Configuration

CategoryVariableDescriptionDefault
DatabaseDB_HOSTMySQL hostlocalhost
DB_PORTMySQL port3306
DB_NAMEDatabase nameRecordPlatform
DB_USERNAMEDatabase userroot
DB_PASSWORDDatabase password-
RedisREDIS_HOSTRedis hostlocalhost
REDIS_PORTRedis port6379
REDIS_PASSWORDRedis password-
NacosNACOS_HOSTNacos serverlocalhost
NACOS_USERNAMENacos usernamenacos
NACOS_PASSWORDNacos passwordnacos
RabbitMQRABBITMQ_ADDRESSESRabbitMQ addresseslocalhost:5672
RABBITMQ_USERNAMERabbitMQ userguest
RABBITMQ_PASSWORDRabbitMQ passwordguest

Security Configuration

VariableDescriptionRequirement
JWT_KEYJWT signing key + ID encryption derivationMin 32 characters, high entropy

Note: ID_SECURITY_KEY is deprecated since v2.0. ID encryption keys are now derived from JWT_KEY.

Storage Configuration

S3-compatible storage is configured via Nacos. Basic environment variables:

VariableDescription
S3_ENDPOINTS3 endpoint URL
S3_ACCESS_KEYAccess key
S3_SECRET_KEYSecret key

Fault domain configuration is managed through Nacos and supports runtime refresh.

Blockchain Configuration

VariableDescriptionExample
BLOCKCHAIN_ACTIVEActive chain typelocal-fisco, bsn-fisco, bsn-besu
FISCO_PEER_ADDRESSFISCO node address127.0.0.1:20200
FISCO_STORAGE_CONTRACTStorage contract address0x...
FISCO_SHARING_CONTRACTSharing contract address0x...

SSL Configuration (Production)

VariableDescription
SERVER_SSL_KEY_STOREKeystore path
SERVER_SSL_KEY_STORE_PASSWORDKeystore password
SECURITY_REQUIRE_SSLForce HTTPS (true/false)
SECURITY_HTTP_REDIRECT_PORTHTTP redirect port

Service Port Configuration

VariableDescriptionDefault
SERVER_PORTBackend REST API port8000
DUBBO_FISCO_PORTFISCO Dubbo service port8091
DUBBO_STORAGE_PORTStorage Dubbo service port8092
DUBBO_HOSTService registration IP (for Docker)-
QOS_BACKEND_PORTBackend QoS management port22330
QOS_FISCO_PORTFISCO QoS management port22331
QOS_STORAGE_PORTStorage QoS management port22332

Note: DUBBO_HOST is critical in Docker environments to ensure services register with accessible IPs rather than Docker bridge network IPs.

Logging Configuration

VariableDescriptionDefault
LOG_LEVELApplication log levelINFO
LOG_PATHLog file output directory/var/log/record-platform

CORS Configuration

VariableDescriptionExample
CORS_ALLOWED_ORIGINSAllowed frontend origins (comma-separated)http://localhost:3000,http://localhost:5173

API Documentation Configuration

VariableDescriptionDefault
KNIFE4J_USERNAMEKnife4j/Swagger UI usernameadmin
KNIFE4J_PASSWORDKnife4j/Swagger UI password-

APM Configuration (Optional)

SkyWalking integration for distributed tracing:

VariableDescriptionDefault
SW_AGENT_COLLECTOR_BACKEND_SERVICESSkyWalking OAP collectorlocalhost:11800
SW_AGENT_NAMEService name in SkyWalkingrecord-platform
SW_JDBC_TRACE_SQL_PARAMETERSTrace SQL parameterstrue

Profile Configuration

Available profiles: local, dev, prod

bash
# Run with specific profile
java -jar app.jar --spring.profiles.active=prod

Profile Differences

Featurelocaldevprod
Swagger UIEnabledEnabledDisabled
Druid MonitorEnabledEnabledDisabled
Debug LoggingEnabledPartialDisabled
SSL RequiredNoNoYes

Nacos Configuration

Dynamic configurations are managed in Nacos. Template: docs/nacos-config-template.yaml

Key Nacos Configs

yaml
# Storage nodes with fault domains
storage:
  # Required: List of active domains
  active-domains:
    - domain-a
    - domain-b

  # Optional: External endpoint (v3.2.0+)
  # Used for generating presigned URLs, solves cross-network (e.g., VPN) access issues
  # Format: http://host:port (no trailing slash)
  external-endpoint: http://10.1.0.2:9000

  # Optional: Standby domain (for failover)
  standby-domain: standby

  # Replication configuration (v3.1.0+)
  replication:
    factor: 2                     # Replica count, default = active domain count
    quorum: auto                  # Quorum strategy: auto|majority|all|number

  # Degraded write configuration (v3.1.0+)
  degraded-write:
    enabled: true                 # Allow degraded writes
    min-replicas: 1               # Minimum replicas in degraded mode
    track-for-sync: true          # Track degraded writes for later sync

  virtualNodesPerNode: 150

  # Optional: Domain detailed configuration
  domains:
    - name: domain-a
      minNodes: 1
      acceptsWrites: true
    - name: domain-b
      minNodes: 1
      acceptsWrites: true
    - name: standby
      minNodes: 0
      acceptsWrites: false

  nodes:
    - name: node-a1
      endpoint: http://minio-a:9000
      faultDomain: domain-a
      weight: 100
    - name: node-b1
      endpoint: http://minio-b:9000
      faultDomain: domain-b
      weight: 100

  # Replica consistency repair configuration
  consistency:
    repair:
      enabled: true               # Enable scheduled repair
      cron: "0 */15 * * * ?"      # Every 15 minutes
      batch-size: 100
      lock-timeout-seconds: 600

  # Data rebalancing configuration
  rebalance:
    enabled: true                 # Enable automatic rebalancing
    rate-limit-per-second: 10     # Max objects copied per second
    cleanup-source: false         # Delete source data after rebalance

Note: active-domains is required and validated at startup. For single-domain development mode, configure only one domain.

Scheduled Tasks Configuration

Share Cleanup

Automatically marks expired shares as inactive:

yaml
share:
  cleanup:
    interval: 300000  # Check every 5 minutes (milliseconds)

Uses distributed lock to prevent duplicate execution in multi-instance deployments.

File Cleanup

Cleans up soft-deleted files after retention period:

yaml
file:
  cleanup:
    retention-days: 30      # Days to retain soft-deleted files
    batch-size: 100         # Files processed per batch
    cron: "0 0 3 * * ?"     # Daily at 3:00 AM

Frontend Configuration

Frontend environment variables (platform-frontend/.env):

VariableDescription
PUBLIC_API_BASE_URLBackend API URL
PUBLIC_ENVEnvironment name
PUBLIC_TENANT_IDDefault tenant ID

Released under the Apache 2.0 License.