Fix Caddy routing: use container:port via caddy_net (DoTheEvo pattern)
Undo the host.docker.internal approach from the previous commit — proper Docker networking routes Caddy to services by container name on the shared caddy_net, not via the host gateway. - lib/common.sh: configure_caddy_for_service now accepts either a plain port number (localhost:PORT fallback) or container:port (preferred). The Caddyfile entry uses the container name for direct Docker DNS routing. - services/caddy.sh: remove extra_hosts hack; update Caddyfile template comments to show container_name:port format - All service files: update configure_caddy_for_service calls to pass container_name:internal_port (e.g. "filebrowser:80", "mealie:9000"). Services using network_mode:host keep plain port numbers. - tools/manage_users.sh: new FileBrowser user-management script (deployed to ~/docker/filebrowser/ during installation). Manages users via the FileBrowser REST API: list, add, delete, passwd, scope, info commands. Documents username format (letters/numbers/hyphens/underscores), password rules (min 8 chars, letter + number required), and scope path convention relative to /srv (= FB_PATH on the host). https://claude.ai/code/session_01UZus2Q9gNTfUdqSMrhuX29
This commit is contained in:
@@ -57,7 +57,7 @@ AB_ENV
|
||||
chown -R "$ACTUAL_USER:$ACTUAL_USER" "$AB_DIR"
|
||||
log_success "Actual Budget configured at $AB_DIR"
|
||||
|
||||
configure_caddy_for_service "ActualBudget" "5006" "budget"
|
||||
configure_caddy_for_service "ActualBudget" "actualbudget:5006" "budget"
|
||||
|
||||
write_readme "$AB_DIR" << MD
|
||||
# Actual Budget
|
||||
|
||||
+1
-1
@@ -93,7 +93,7 @@ ARM_ENV
|
||||
chown -R "$ACTUAL_USER:$ACTUAL_USER" "$ARM_OUTPUT"
|
||||
log_success "A.R.M. configured at $ARM_DIR"
|
||||
|
||||
configure_caddy_for_service "A.R.M." "8080" "arm"
|
||||
configure_caddy_for_service "A.R.M." "arm:8080" "arm"
|
||||
|
||||
write_readme "$ARM_DIR" << MD
|
||||
# A.R.M. (Automatic Ripping Machine)
|
||||
|
||||
@@ -69,7 +69,7 @@ ABS_ENV
|
||||
chown -R "$ACTUAL_USER:$ACTUAL_USER" "$ABS_DIR"
|
||||
log_success "Audiobookshelf configured at $ABS_DIR"
|
||||
|
||||
configure_caddy_for_service "AudioBookshelf" "13378" "audiobooks"
|
||||
configure_caddy_for_service "AudioBookshelf" "audiobookshelf:80" "audiobooks"
|
||||
|
||||
write_readme "$ABS_DIR" << MD
|
||||
# Audiobookshelf
|
||||
|
||||
+3
-5
@@ -82,8 +82,6 @@ services:
|
||||
- ACME_AGREE=true
|
||||
labels:
|
||||
- "io.podman.annotations.label/crowdsec.enable=true"
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
networks:
|
||||
- caddy_net
|
||||
|
||||
@@ -123,7 +121,7 @@ CADDY_COMPOSE
|
||||
# Example:
|
||||
# myservice.yourdomain.com {
|
||||
# import authelia
|
||||
# reverse_proxy host.docker.internal:PORT
|
||||
# reverse_proxy container_name:port
|
||||
# }
|
||||
|
||||
# ActualBudget
|
||||
@@ -133,7 +131,7 @@ CADDY_COMPOSE
|
||||
# format json
|
||||
# level INFO
|
||||
# }
|
||||
# reverse_proxy host.docker.internal:5006
|
||||
# reverse_proxy actualbudget:5006
|
||||
# header {
|
||||
# Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
|
||||
# X-Frame-Options "SAMEORIGIN"
|
||||
@@ -174,7 +172,7 @@ a web service). You can also edit it by hand:
|
||||
|
||||
```
|
||||
myservice.example.com {
|
||||
reverse_proxy host.docker.internal:1234
|
||||
reverse_proxy container_name:1234
|
||||
log {
|
||||
output file /var/log/caddy/myservice.example.com.log
|
||||
format json
|
||||
|
||||
+1
-1
@@ -77,7 +77,7 @@ EMBY_ENV
|
||||
chown -R "$ACTUAL_USER:$ACTUAL_USER" "$EMBY_DIR"
|
||||
log_success "Emby configured at $EMBY_DIR"
|
||||
|
||||
configure_caddy_for_service "Emby" "8096" "emby"
|
||||
configure_caddy_for_service "Emby" "emby:8096" "emby"
|
||||
|
||||
write_readme "$EMBY_DIR" << MD
|
||||
# Emby
|
||||
|
||||
+11
-1
@@ -67,10 +67,20 @@ FB_SETTINGS
|
||||
|
||||
chown -R "$ACTUAL_USER:$ACTUAL_USER" "$FB_DIR"
|
||||
|
||||
# Deploy user-management helper script
|
||||
local _TOOLS_DIR
|
||||
_TOOLS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../tools" 2>/dev/null && pwd)" || true
|
||||
if [ -f "$_TOOLS_DIR/manage_users.sh" ]; then
|
||||
cp "$_TOOLS_DIR/manage_users.sh" "$FB_DIR/manage_users.sh"
|
||||
chmod 750 "$FB_DIR/manage_users.sh"
|
||||
chown "$ACTUAL_USER:$ACTUAL_USER" "$FB_DIR/manage_users.sh"
|
||||
log_success "manage_users.sh installed at $FB_DIR/manage_users.sh"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
log_success "Filebrowser configured at $FB_DIR"
|
||||
|
||||
configure_caddy_for_service "FileBrowser" "8085" "files"
|
||||
configure_caddy_for_service "FileBrowser" "filebrowser:80" "files"
|
||||
|
||||
write_readme "$FB_DIR" << MD
|
||||
# FileBrowser
|
||||
|
||||
+1
-1
@@ -62,7 +62,7 @@ FMD_ENV
|
||||
chown -R "$ACTUAL_USER:$ACTUAL_USER" "$FMD_DIR"
|
||||
log_success "FindMyDevice configured at $FMD_DIR"
|
||||
|
||||
configure_caddy_for_service "FindMyDevice" "8084" "fmd"
|
||||
configure_caddy_for_service "FindMyDevice" "fmd:8080" "fmd"
|
||||
|
||||
write_readme "$FMD_DIR" << MD
|
||||
# FindMyDevice (FMD)
|
||||
|
||||
@@ -514,7 +514,7 @@ FNEOF
|
||||
# ── Caddy snippet ──────────────────────────────────────────────────────────
|
||||
if [ -n "$FRIGATE_PUBLIC_URL" ] && [ "$FRIGATE_PUBLIC_URL" != "https://cam.yourdomain.com" ]; then
|
||||
local _DOM="${FRIGATE_PUBLIC_URL#https://}"
|
||||
configure_caddy_for_service "Frigate" "8971" "frigate-audio" || true
|
||||
configure_caddy_for_service "Frigate" "frigate-audio:8971" "frigate-audio" || true
|
||||
fi
|
||||
|
||||
ensure_docker_dir_ownership "$DIR"
|
||||
|
||||
+1
-1
@@ -128,7 +128,7 @@ FRIGATE_CONFIG
|
||||
chown -R "$ACTUAL_USER:$ACTUAL_USER" "$FRIGATE_MEDIA" 2>/dev/null || true
|
||||
log_success "Frigate configured at $FRIGATE_DIR"
|
||||
|
||||
configure_caddy_for_service "Frigate" "5000" "frigate"
|
||||
configure_caddy_for_service "Frigate" "frigate:5000" "frigate"
|
||||
|
||||
write_readme "$FRIGATE_DIR" << MD
|
||||
# Frigate NVR
|
||||
|
||||
@@ -91,7 +91,11 @@ HA_CONFIG
|
||||
echo ""
|
||||
log_success "Home Assistant configured at $HOMEASSISTANT_DIR"
|
||||
|
||||
configure_caddy_for_service "Home Assistant" "8123" "home"
|
||||
if [ "$HA_NETMODE" = "2" ]; then
|
||||
configure_caddy_for_service "Home Assistant" "8123" "home"
|
||||
else
|
||||
configure_caddy_for_service "Home Assistant" "homeassistant:8123" "home"
|
||||
fi
|
||||
|
||||
local START_HA=""
|
||||
prompt_yn "Start Home Assistant now? (y/n):" "y" START_HA
|
||||
|
||||
+1
-1
@@ -572,7 +572,7 @@ IMPORT_BODY
|
||||
|
||||
log_success "Immich configured at $IMMICH_DIR"
|
||||
|
||||
configure_caddy_for_service "Immich" "2283" "immich"
|
||||
configure_caddy_for_service "Immich" "immich-server:2283" "immich"
|
||||
|
||||
write_readme "$IMMICH_DIR" << MD
|
||||
# Immich
|
||||
|
||||
@@ -87,7 +87,7 @@ JELLYFIN_ENV
|
||||
chown -R "$ACTUAL_USER:$ACTUAL_USER" "$JELLYFIN_DIR"
|
||||
log_success "Jellyfin configured at $JELLYFIN_DIR"
|
||||
|
||||
configure_caddy_for_service "Jellyfin" "8096" "jellyfin"
|
||||
configure_caddy_for_service "Jellyfin" "jellyfin:8096" "jellyfin"
|
||||
|
||||
write_readme "$JELLYFIN_DIR" << MD
|
||||
# Jellyfin
|
||||
|
||||
+1
-1
@@ -275,7 +275,7 @@ COMPOSE
|
||||
log_success "js99er configured at $JS99ER_DIR"
|
||||
|
||||
# ── 5. Reverse proxy (no-ops if Caddy isn't installed locally) ───────────
|
||||
configure_caddy_for_service "js99er" "$JS99ER_PORT" "js99er"
|
||||
configure_caddy_for_service "js99er" "js99er:80" "js99er"
|
||||
|
||||
# ── 6. Build & start ─────────────────────────────────────────────────────
|
||||
local START_JS99ER=""
|
||||
|
||||
@@ -132,7 +132,7 @@ MM_COMPOSE
|
||||
log_success "MagicMirror instance $i configured at $MM_DIR (port $MM_PORT)"
|
||||
|
||||
# Offer Caddy only for first instance
|
||||
[ "$i" -eq 1 ] && configure_caddy_for_service "MagicMirror" "$MM_PORT" "mirror"
|
||||
[ "$i" -eq 1 ] && configure_caddy_for_service "MagicMirror" "magicmirror-${MM_PORT}:8080" "mirror"
|
||||
|
||||
local START_MM=""
|
||||
prompt_yn "Start instance $i now? (y/n):" "y" START_MM
|
||||
|
||||
+1
-1
@@ -63,7 +63,7 @@ MEALIE_COMPOSE
|
||||
chown -R "$ACTUAL_USER:$ACTUAL_USER" "$MEALIE_DIR"
|
||||
log_success "Mealie configured at $MEALIE_DIR"
|
||||
|
||||
configure_caddy_for_service "Mealie" "9925" "recipes"
|
||||
configure_caddy_for_service "Mealie" "mealie:9000" "recipes"
|
||||
|
||||
write_readme "$MEALIE_DIR" << MD
|
||||
# Mealie
|
||||
|
||||
@@ -74,7 +74,7 @@ MC_ENV
|
||||
chown -R "$ACTUAL_USER:$ACTUAL_USER" "$MC_DIR"
|
||||
log_success "MeshCentral configured at $MC_DIR"
|
||||
|
||||
configure_caddy_for_service "MeshCentral" "4430" "mesh"
|
||||
configure_caddy_for_service "MeshCentral" "meshcentral:443" "mesh"
|
||||
|
||||
write_readme "$MC_DIR" << MD
|
||||
# MeshCentral
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@ NTFY_ENV
|
||||
echo ""
|
||||
log_success "ntfy configured at $NTFY_DIR"
|
||||
|
||||
configure_caddy_for_service "ntfy" "8090" "ntfy"
|
||||
configure_caddy_for_service "ntfy" "ntfy:80" "ntfy"
|
||||
|
||||
write_readme "$NTFY_DIR" << MD
|
||||
# ntfy
|
||||
|
||||
@@ -48,7 +48,7 @@ PORTAINER_COMPOSE
|
||||
echo ""
|
||||
log_success "Portainer configured at $PORTAINER_DIR"
|
||||
|
||||
configure_caddy_for_service "Portainer" "9000" "portainer"
|
||||
configure_caddy_for_service "Portainer" "portainer:9000" "portainer"
|
||||
|
||||
write_readme "$PORTAINER_DIR" << MD
|
||||
# Portainer
|
||||
|
||||
+1
-1
@@ -70,7 +70,7 @@ TRACCAR_XML
|
||||
chown -R "$ACTUAL_USER:$ACTUAL_USER" "$TRACCAR_DIR"
|
||||
log_success "Traccar configured at $TRACCAR_DIR"
|
||||
|
||||
configure_caddy_for_service "Traccar" "8082" "traccar"
|
||||
configure_caddy_for_service "Traccar" "traccar:8082" "traccar"
|
||||
|
||||
write_readme "$TRACCAR_DIR" << MD
|
||||
# Traccar
|
||||
|
||||
@@ -75,7 +75,7 @@ docker compose logs -f # logs
|
||||
MD
|
||||
|
||||
# Configure Caddy reverse proxy before starting
|
||||
configure_caddy_for_service "Uptime Kuma" "3001" "uptime"
|
||||
configure_caddy_for_service "Uptime Kuma" "uptime-kuma:3001" "uptime"
|
||||
|
||||
local START_UPTIME=""
|
||||
prompt_yn "Start Uptime Kuma now? (y/n):" "y" START_UPTIME
|
||||
|
||||
+1
-1
@@ -79,7 +79,7 @@ WGEASY_ENV
|
||||
chown -R "$ACTUAL_USER:$ACTUAL_USER" "$WGEASY_DIR"
|
||||
log_success "wg-easy configured at $WGEASY_DIR"
|
||||
|
||||
configure_caddy_for_service "wg-easy" "51821" "vpn"
|
||||
configure_caddy_for_service "wg-easy" "wg-easy:51821" "vpn"
|
||||
|
||||
write_readme "$WGEASY_DIR" << MD
|
||||
# wg-easy
|
||||
|
||||
Reference in New Issue
Block a user