Add site-wide defaults: timezone, domain, Caddy network
Introduces a one-time configuration wizard (sudo ./setup.sh configure) that stores SITE_TZ, SITE_DOMAIN, and SITE_CADDY_NET in ~/docker/.config. Every service now uses these as prompt defaults so the user types common values once instead of re-answering the same questions for each service. - lib/common.sh: load_site_config / save_site_config; auto-loads on source; backward-compat BASE_DOMAIN alias kept for old .config files - setup.sh: run_site_configure wizard; first-run offer after base install; `sudo ./setup.sh configure` command to update defaults at any time - 14 services: TZ_VAL now honours SITE_TZ, falling back to /etc/timezone - 3 inline-heredoc services (filebrowser, homeassistant, ntfy): same fix - authelia: SITE_TZ/SITE_DOMAIN as prompt defaults; SITE_CADDY_NET replaces hardcoded caddy_net throughout (env, compose patch, network creation) - minecraft, frigate-audio: simplify BASE_DOMAIN read to use SITE_DOMAIN - sky-cam: SITE_TZ as default for timezone prompt https://claude.ai/code/session_01Y4dMKtkqkpvmgDKoRdzhTG
This commit is contained in:
@@ -47,6 +47,55 @@ register_service() {
|
||||
SERVICE_ORDER+=("$name")
|
||||
}
|
||||
|
||||
# ── Site-wide defaults ────────────────────────────────────────────────────────
|
||||
# Stored in $DOCKER_DIR/.config (key=value, one per line).
|
||||
# Service modules read these as prompt defaults so the user only types
|
||||
# timezone, domain, and Caddy network once. Run: sudo ./setup.sh configure
|
||||
SITE_TZ=""
|
||||
SITE_DOMAIN=""
|
||||
SITE_CADDY_NET="caddy_net"
|
||||
SITE_PUID=""
|
||||
SITE_PGID=""
|
||||
|
||||
load_site_config() {
|
||||
local cfg="$DOCKER_DIR/.config"
|
||||
[ -f "$cfg" ] || return 0
|
||||
local key val
|
||||
while IFS='=' read -r key val; do
|
||||
[[ "$key" =~ ^[[:space:]]*# ]] && continue
|
||||
[[ -z "${key// }" ]] && continue
|
||||
case "$key" in
|
||||
SITE_TZ) SITE_TZ="$val" ;;
|
||||
SITE_DOMAIN) SITE_DOMAIN="$val" ;;
|
||||
SITE_CADDY_NET) SITE_CADDY_NET="$val" ;;
|
||||
SITE_PUID) SITE_PUID="$val" ;;
|
||||
SITE_PGID) SITE_PGID="$val" ;;
|
||||
BASE_DOMAIN) [ -z "$SITE_DOMAIN" ] && SITE_DOMAIN="$val" ;;
|
||||
esac
|
||||
done < "$cfg"
|
||||
export SITE_TZ SITE_DOMAIN SITE_CADDY_NET SITE_PUID SITE_PGID
|
||||
}
|
||||
|
||||
save_site_config() {
|
||||
local cfg="$DOCKER_DIR/.config"
|
||||
mkdir -p "$(dirname "$cfg")"
|
||||
{
|
||||
echo "# ubuntu-post-install site defaults"
|
||||
echo "# Re-run wizard: sudo ./setup.sh configure"
|
||||
[ -n "$SITE_TZ" ] && echo "SITE_TZ=$SITE_TZ"
|
||||
[ -n "$SITE_DOMAIN" ] && echo "SITE_DOMAIN=$SITE_DOMAIN"
|
||||
[ -n "$SITE_CADDY_NET" ] && echo "SITE_CADDY_NET=$SITE_CADDY_NET"
|
||||
[ -n "$SITE_PUID" ] && echo "SITE_PUID=$SITE_PUID"
|
||||
[ -n "$SITE_PGID" ] && echo "SITE_PGID=$SITE_PGID"
|
||||
# Backward-compat alias for services that still read BASE_DOMAIN directly
|
||||
[ -n "$SITE_DOMAIN" ] && echo "BASE_DOMAIN=$SITE_DOMAIN"
|
||||
} > "$cfg"
|
||||
chmod 600 "$cfg"
|
||||
}
|
||||
|
||||
# Load immediately so all service modules inherit the values when sourced
|
||||
load_site_config
|
||||
|
||||
# ── Pre-flight ───────────────────────────────────────────────────────────────
|
||||
require_root() {
|
||||
if [ "${EUID:-$(id -u)}" -ne 0 ]; then
|
||||
|
||||
Reference in New Issue
Block a user