Server Configuration
The EasyShell server is configured via application.yml (or application.properties) and environment variables. Spring Boot property binding applies — environment variables use uppercase with underscores (e.g., EASYSHELL_SERVER_PORT maps to easyshell.server.port).
Server Settings
Section titled “Server Settings”server: port: 18080
spring: application: name: easyshell-serverDatabase Configuration
Section titled “Database Configuration”spring: datasource: url: jdbc:mysql://localhost:3306/easyshell?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=UTC username: easyshell password: your_password driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: update show-sql: false properties: hibernate: dialect: org.hibernate.dialect.MySQLDialect format_sql: trueexport SPRING_DATASOURCE_URL="jdbc:mysql://localhost:3306/easyshell"export SPRING_DATASOURCE_USERNAME="easyshell"export SPRING_DATASOURCE_PASSWORD="your_password"Redis Configuration
Section titled “Redis Configuration”spring: data: redis: host: localhost port: 6379 password: "" database: 0 timeout: 5000Redis is used for:
- Session management
- Cache layer
- WebSocket message broker (when running multiple server instances)
Agent Communication
Section titled “Agent Communication”easyshell: agent: heartbeat-interval: 30 # seconds heartbeat-timeout-multiplier: 3 # mark offline after 3 missed heartbeats metrics-interval: 60 # seconds token-expiry: 365 # daysFile Storage
Section titled “File Storage”easyshell: storage: type: local # local | s3 local: path: /data/easyshell/uploads s3: bucket: easyshell-site region: us-east-1 access-key: ${AWS_ACCESS_KEY_ID} secret-key: ${AWS_SECRET_ACCESS_KEY}Script Execution
Section titled “Script Execution”easyshell: execution: default-timeout: 300 # seconds (5 minutes) max-timeout: 3600 # seconds (1 hour) max-concurrent-per-host: 5 output-buffer-size: 1048576 # 1MB per execution history-retention-days: 90Security
Section titled “Security”easyshell: security: jwt: secret: ${JWT_SECRET:change-me-in-production} expiration: 86400 # seconds (24 hours) cors: allowed-origins: - http://localhost:5173 - https://easyshell.ai rate-limit: enabled: true requests-per-minute: 60Logging
Section titled “Logging”logging: level: root: INFO dev.easyshell: DEBUG org.hibernate.SQL: WARN file: name: /var/log/easyshell/server.log max-size: 100MB max-history: 30All Configuration Properties
Section titled “All Configuration Properties”| Property | Type | Default | Description |
|---|---|---|---|
server.port | number | 18080 | HTTP server port |
spring.datasource.url | string | — | JDBC connection URL |
spring.data.redis.host | string | localhost | Redis host |
spring.data.redis.port | number | 6379 | Redis port |
easyshell.agent.heartbeat-interval | number | 30 | Agent heartbeat interval (seconds) |
easyshell.agent.metrics-interval | number | 60 | Metrics reporting interval (seconds) |
easyshell.execution.default-timeout | number | 300 | Default script timeout (seconds) |
easyshell.execution.max-concurrent-per-host | number | 5 | Max concurrent scripts per host |
easyshell.security.jwt.expiration | number | 86400 | JWT token expiration (seconds) |
easyshell.storage.type | string | local | Storage backend: local or s3 |