install.sh: DATA_DIR = /data/castle (match runtime + deployments)
install.sh provisioned mqtt/postgres/neo4j data + their docker -v mounts under
~/.castle/data, but castle_core.config and every container deployment use
/data/castle — so a fresh install put the data in the wrong place. Resolve DATA_DIR
the same way config.py does (${CASTLE_DATA_DIR:-/data/castle}); since that's outside
$HOME, create it with a sudo+chown fallback when the parent isn't user-writable.
Also add REPOS_DIR and fix the summary (Code→Repos, 'castle services start'→'castle
start').
This commit is contained in:
23
install.sh
23
install.sh
@@ -18,7 +18,13 @@ set -euo pipefail
|
|||||||
|
|
||||||
CASTLE_HOME="${HOME}/.castle"
|
CASTLE_HOME="${HOME}/.castle"
|
||||||
CASTLE_CONF="${CASTLE_HOME}/infra.conf"
|
CASTLE_CONF="${CASTLE_HOME}/infra.conf"
|
||||||
DATA_DIR="${CASTLE_HOME}/data"
|
# Program data lives on a dedicated volume, decoupled from CASTLE_HOME — must match
|
||||||
|
# castle_core.config._resolve_data_dir (default /data/castle, override CASTLE_DATA_DIR)
|
||||||
|
# so the data dirs + container mounts created here line up with what castle deploy
|
||||||
|
# generates for the mqtt/postgres/neo4j deployments.
|
||||||
|
DATA_DIR="${CASTLE_DATA_DIR:-/data/castle}"
|
||||||
|
# Program source repos (default /data/repos, override CASTLE_REPOS_DIR).
|
||||||
|
REPOS_DIR="${CASTLE_REPOS_DIR:-/data/repos}"
|
||||||
CASTLE_ROOT="$(cd "$(dirname "$0")" && pwd)"
|
CASTLE_ROOT="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
|
||||||
# Container defaults
|
# Container defaults
|
||||||
@@ -219,9 +225,17 @@ create_directories() {
|
|||||||
mkdir -p "${CASTLE_HOME}/deployments"
|
mkdir -p "${CASTLE_HOME}/deployments"
|
||||||
mkdir -p "${CASTLE_HOME}/artifacts/specs"
|
mkdir -p "${CASTLE_HOME}/artifacts/specs"
|
||||||
mkdir -p "${CASTLE_HOME}/artifacts/content"
|
mkdir -p "${CASTLE_HOME}/artifacts/content"
|
||||||
mkdir -p "${DATA_DIR}"
|
|
||||||
mkdir -p "${CASTLE_HOME}/secrets" && chmod 700 "${CASTLE_HOME}/secrets"
|
mkdir -p "${CASTLE_HOME}/secrets" && chmod 700 "${CASTLE_HOME}/secrets"
|
||||||
|
|
||||||
|
# Program data volume (default /data/castle) lives outside $HOME, so on a fresh
|
||||||
|
# machine its parent may not be user-writable — fall back to sudo + chown so the
|
||||||
|
# later container mounts (and castle deploy) can write there.
|
||||||
|
if ! mkdir -p "${DATA_DIR}" 2>/dev/null; then
|
||||||
|
log_info "creating ${DATA_DIR} (needs sudo — outside \$HOME)"
|
||||||
|
sudo mkdir -p "${DATA_DIR}"
|
||||||
|
sudo chown "$(id -un):$(id -gn)" "${DATA_DIR}"
|
||||||
|
fi
|
||||||
|
|
||||||
# Seed a minimal global castle.yaml — never clobber an existing one.
|
# Seed a minimal global castle.yaml — never clobber an existing one.
|
||||||
if [[ -f "${CASTLE_HOME}/castle.yaml" ]]; then
|
if [[ -f "${CASTLE_HOME}/castle.yaml" ]]; then
|
||||||
log_ok
|
log_ok
|
||||||
@@ -423,16 +437,15 @@ print_summary() {
|
|||||||
|
|
||||||
printf "Directories:\n"
|
printf "Directories:\n"
|
||||||
printf " %-20s %s\n" "Castle home" "$CASTLE_HOME"
|
printf " %-20s %s\n" "Castle home" "$CASTLE_HOME"
|
||||||
printf " %-20s %s\n" "Code" "${CASTLE_HOME}/code"
|
printf " %-20s %s\n" "Repos" "$REPOS_DIR"
|
||||||
printf " %-20s %s\n" "Artifacts" "${CASTLE_HOME}/artifacts"
|
printf " %-20s %s\n" "Artifacts" "${CASTLE_HOME}/artifacts"
|
||||||
printf " %-20s %s\n" "Data" "$DATA_DIR"
|
printf " %-20s %s\n" "Data" "$DATA_DIR"
|
||||||
printf " %-20s %s\n" "Secrets" "${CASTLE_HOME}/secrets"
|
printf " %-20s %s\n" "Secrets" "${CASTLE_HOME}/secrets"
|
||||||
printf "\n"
|
printf "\n"
|
||||||
|
|
||||||
printf "Next steps:\n"
|
printf "Next steps:\n"
|
||||||
printf " cd %s\n" "$CASTLE_ROOT"
|
|
||||||
printf " castle deploy # Generate registry, systemd units, Caddyfile\n"
|
printf " castle deploy # Generate registry, systemd units, Caddyfile\n"
|
||||||
printf " castle services start # Start all application services\n"
|
printf " castle start # Start all deployments and the gateway\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user