Replace CADDY_REMOTE_HOST with explicit CADDY_MODE in site config

The old CADDY_REMOTE_HOST variable was confusingly named — it sounded like
the Caddy server's address but actually stored this machine's IP (so Caddy
knew how to reach services here). Services don't need to know where Caddy
is; they only need to know whether to write a Caddyfile or create a snippet.

Changes in lib/common.sh:
- Add CADDY_MODE=local|remote|none as the authoritative setting
- load_site_config: parse CADDY_MODE; if old CADDY_REMOTE_HOST present and
  CADDY_MODE unset, infer CADDY_MODE=remote (backward compat)
- save_site_config: write CADDY_MODE, drop CADDY_REMOTE_HOST output
- configure_caddy_for_service: use CADDY_MODE for mode detection; for remote
  snippets auto-detect this machine's primary IP via hostname -I instead of
  requiring a stored value (still falls back to CADDY_REMOTE_HOST if present
  in an old .config)

Changes in setup.sh (run_site_configure wizard):
- Replace free-text "Caddy remote host" prompt with a 3-choice menu:
  [1] This machine  [2] Remote machine  [3] None/skip
- Existing installs with CADDY_REMOTE_HOST pre-select option 2 automatically

https://claude.ai/code/session_01S7UecmQRG6CKTYPoBqbVLj
This commit is contained in:
Claude
2026-06-10 00:49:41 +00:00
parent ec9aa605cf
commit 5b340552c3
2 changed files with 50 additions and 26 deletions
+21 -6
View File
@@ -122,19 +122,34 @@ run_site_configure() {
local _cur_tz="${SITE_TZ:-$_sys_tz}"
local _cur_dom="${SITE_DOMAIN:-}"
local _cur_net="${SITE_CADDY_NET:-caddy_net}"
local _cur_caddy_host="${CADDY_REMOTE_HOST:-}"
# Resolve current Caddy mode for display — handle legacy CADDY_REMOTE_HOST
local _cur_mode="${CADDY_MODE:-}"
[ -z "$_cur_mode" ] && [ -n "${CADDY_REMOTE_HOST:-}" ] && _cur_mode="remote"
[ -z "$_cur_mode" ] && _cur_mode="local"
prompt_text " Timezone [${_cur_tz}]:" "$_cur_tz" SITE_TZ
prompt_text " Base domain (e.g., example.com) [${_cur_dom:-<not set>}]:" "$_cur_dom" SITE_DOMAIN
prompt_text " Caddy Docker network [${_cur_net}]:" "$_cur_net" SITE_CADDY_NET
echo ""
echo " Caddy location: leave blank if Caddy runs on THIS machine (default)."
echo " Set to this machine's LAN IP or hostname if Caddy runs on a DIFFERENT"
echo " machine — service installers will generate snippet files to copy over."
prompt_text " Caddy remote host (LAN IP/hostname) [${_cur_caddy_host:-<this machine>}]:" "$_cur_caddy_host" CADDY_REMOTE_HOST
echo " Where does Caddy run?"
echo " [1] This machine — Caddy installed here (default)"
echo " [2] Remote machine — different server, VPN node, or Netbird peer"
echo " (service installers save snippet files to ~/docker/caddy-snippets/)"
echo " [3] None / skip — configure Caddy later"
echo ""
local _caddy_default="1"
case "$_cur_mode" in remote) _caddy_default="2" ;; none) _caddy_default="3" ;; esac
local _caddy_choice=""
prompt_text " Caddy location [${_caddy_default}]:" "$_caddy_default" _caddy_choice
case "${_caddy_choice:-$_caddy_default}" in
2) CADDY_MODE="remote" ;;
3) CADDY_MODE="none" ;;
*) CADDY_MODE="local" ;;
esac
CADDY_REMOTE_HOST="" # clear legacy value; CADDY_MODE is authoritative now
export SITE_TZ SITE_DOMAIN SITE_CADDY_NET CADDY_REMOTE_HOST
export SITE_TZ SITE_DOMAIN SITE_CADDY_NET CADDY_MODE CADDY_REMOTE_HOST
mkdir -p "$DOCKER_DIR"
save_site_config
log_success "Saved to $DOCKER_DIR/.config"