Skip to content

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).

application.yml
server:
port: 18080
spring:
application:
name: easyshell-server
application.yml
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: true
application.yml
spring:
data:
redis:
host: localhost
port: 6379
password: ""
database: 0
timeout: 5000

Redis is used for:

  • Session management
  • Cache layer
  • WebSocket message broker (when running multiple server instances)
application.yml
easyshell:
agent:
heartbeat-interval: 30 # seconds
heartbeat-timeout-multiplier: 3 # mark offline after 3 missed heartbeats
metrics-interval: 60 # seconds
token-expiry: 365 # days
application.yml
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}
application.yml
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: 90
application.yml
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: 60
application.yml
logging:
level:
root: INFO
dev.easyshell: DEBUG
org.hibernate.SQL: WARN
file:
name: /var/log/easyshell/server.log
max-size: 100MB
max-history: 30
PropertyTypeDefaultDescription
server.portnumber18080HTTP server port
spring.datasource.urlstringJDBC connection URL
spring.data.redis.hoststringlocalhostRedis host
spring.data.redis.portnumber6379Redis port
easyshell.agent.heartbeat-intervalnumber30Agent heartbeat interval (seconds)
easyshell.agent.metrics-intervalnumber60Metrics reporting interval (seconds)
easyshell.execution.default-timeoutnumber300Default script timeout (seconds)
easyshell.execution.max-concurrent-per-hostnumber5Max concurrent scripts per host
easyshell.security.jwt.expirationnumber86400JWT token expiration (seconds)
easyshell.storage.typestringlocalStorage backend: local or s3