Service Config

Each service is a JSON file in data/services/. Full example:

{
  "name": "redis",
  "group": "database",
  "hostname": "keel-redis",
  "image": "redis:7",
  "network": "keel-net",
  "ports": { "internal": 6379, "external": 6379 },
  "environment": { "REDIS_ARGS": "--maxmemory 256mb" },
  "volumes": ["keel-redis-data:/data"],
  "command": "redis-server --save 60 1",
  "files": ["data/config/redis.conf:/etc/redis/redis.conf"],
  "start_order": 1,
  "ram_estimate_mb": 256,
  "dashboard_url": "http://localhost:8001",
  "health_check": {
    "type": "command",
    "command": "redis-cli ping",
    "interval": 5,
    "retries": 10,
    "start_period": 5
  },
  "logs": [
    { "name": "redis", "type": "docker" },
    { "name": "slow", "type": "file", "path": "/var/log/redis-slow.log", "host_path": "/applog/redis/slow.log" }
  ],
  "dev": {
    "dockerfile": ["FROM redis:7", "WORKDIR /data"],
    "command": ["redis-server", "--loglevel", "debug"]
  }
}

Fields

FieldDescription
nameUnique service identifier
groupLogical grouping — infra starts first, then seeders, then the rest
hostnameDocker container hostname
imageDocker image name:tag
registryghcr — auto-login with stored credentials; local — skip pull for locally built images (omit for public images)
networkDocker network (defaults to keel-net)
ports{ internal, external } primary port mapping
extra_portsAdditional { internal, external } port mappings
environmentEnvironment variables passed to the container
volumesVolume mounts — named volumes, bind mounts, or config files
commandOverride container CMD
filesConfig files mounted read-only into the container; synced via scp on remote targets (local:container)
platformForce a specific platform for the image (e.g. linux/amd64) — useful for cross-architecture hosts
start_orderStartup priority (lower = earlier, 0 = last)
ram_estimate_mbDisplay hint for the dashboard
dashboard_urlExternal URL — shows an OPEN button in the UI
health_checkHTTP or command-based health check config
logsLog sources — docker or file with optional host_path
network_aliasesDocker network aliases — enables virtual hostname resolution within the network
devDevelopment mode config — dockerfile, command, cap_add