@startuml hide empty description state "./cryptic-net daemon -c ./daemon.yml" as init state AppDir { note "All relative paths are relative to the root of the AppDir" as N1 state "./AppRun" as AppRun { AppRun : * Set PATH to APPDIR/bin } state "./bin/entrypoint daemon -c ./daemon.yml" as entrypoint { entrypoint : * Create runtime dir at $_RUNTIME_DIR_PATH entrypoint : * Lock runtime dir entrypoint : * Merge given and default daemon.yml files entrypoint : * Copy bootstrap.tgz into $_DATA_DIR_PATH, if it's not there entrypoint : * Merge daemon.yml config into bootstrap.tgz entrypoint : * Create $_RUNTIME_DIR_PATH/dnsmasq.conf entrypoint : * Create $_RUNTIME_DIR_PATH/nebula.yml entrypoint : * Create $_RUNTIME_DIR_PATH/garage-N.toml\n (one per storage allocation) entrypoint : * Run child processes entrypoint : * (in the background) Updates garage cluster layout entrypoint : * (in the background) Stores host info in global bucket } init --> AppRun : exec AppRun --> entrypoint : exec state "./bin/dnsmasq -d -C $_RUNTIME_DIR_PATH/dnsmasq.conf" as dnsmasq entrypoint --> dnsmasq : child state "./bin/nebula -config $_RUNTIME_DIR_PATH/nebula.yml" as nebula entrypoint --> nebula : child state "./bin/garage -c $_RUNTIME_DIR_PATH/garage-N.toml server" as garage entrypoint --> garage : child (one per storage allocation) } @enduml