Rename Asterisk container from easy-asterisk to asterisk
New installs now name the container "asterisk", matching every other service's container_name == service name convention, instead of reusing the vendored easy-asterisk CLI tool's own name (which stays /usr/local/bin/easy-asterisk inside the container, unrelated and unchanged). An existing "easy-asterisk" install is never silently renamed: every place that resolves the container name (_asterisk_resolve_layout in asterisk.sh, plus the duplicated copies in security-dashboard.sh, sms-inbound.sh, pstn-trunk.sh, and tools/pstn-test-check.sh's docker ps detection) now reads it from the box's own docker-compose.yml instead of assuming it, falling back to "asterisk" only when there's no existing install to read. Migrating a live box to the new name is a one-time manual action (edit docker-compose.yml's container_name for Asterisk and its coturn sidecar, docker compose down + up -d); every sibling service then picks it up automatically on its next run. The DigitalOcean-droplet layout (asterisk-digital-ocean directory, easy-asterisk-do container) is untouched by this - that naming stays exactly as documented for pre-merge droplet installs. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SpKTLpwAgZNooTacWeQLuc
This commit is contained in:
@@ -44,11 +44,26 @@ public-FQDN-only flow, hand-built Caddy site block, remote Authelia, Cloud
|
|||||||
Firewall — behind that one answer. Two lessons worth reusing:
|
Firewall — behind that one answer. Two lessons worth reusing:
|
||||||
|
|
||||||
- **Don't rename a live install's directory or containers.** New installs
|
- **Don't rename a live install's directory or containers.** New installs
|
||||||
land in `~/docker/asterisk` with `easy-asterisk`; a pre-merge droplet keeps
|
land in `~/docker/asterisk` with a container named `asterisk`; a pre-merge
|
||||||
`~/docker/asterisk-digital-ocean` and `easy-asterisk-do`, because its
|
droplet keeps `~/docker/asterisk-digital-ocean` and `easy-asterisk-do`,
|
||||||
Caddyfile block, UFW rules, Cloud Firewall, CrowdSec acquisition and PSTN
|
because its Caddyfile block, UFW rules, Cloud Firewall, CrowdSec
|
||||||
trunk all name those exact paths. `_asterisk_resolve_layout()` picks
|
acquisition and PSTN trunk all name those exact paths.
|
||||||
whichever exists, and every sibling service probes both.
|
`_asterisk_resolve_layout()` picks whichever directory exists, and every
|
||||||
|
sibling service probes both. The plain container name was itself renamed
|
||||||
|
once already — from `easy-asterisk` (this repo's original choice, reusing
|
||||||
|
the vendor CLI tool's own name, `/usr/local/bin/easy-asterisk` inside the
|
||||||
|
container — unrelated, never renamed) to plain `asterisk`, matching every
|
||||||
|
other service's own `container_name == service name` convention. The same
|
||||||
|
"don't rename under a running deployment" rule applied: every resolver
|
||||||
|
(`_asterisk_resolve_layout()` and the duplicated copies in
|
||||||
|
`security-dashboard.sh`, `sms-inbound.sh`, `pstn-trunk.sh`,
|
||||||
|
`tools/pstn-test-check.sh`) reads the container name out of the box's own
|
||||||
|
`docker-compose.yml` instead of assuming it, so an existing `easy-asterisk`
|
||||||
|
install keeps working unchanged. Migrating one to the new name is a
|
||||||
|
deliberate, one-time action on that box (edit `docker-compose.yml`'s
|
||||||
|
`container_name:` for both Asterisk and its coturn sidecar, `docker compose
|
||||||
|
down` + `up -d`) — once done, every sibling service re-reads it from that
|
||||||
|
same file and follows automatically.
|
||||||
- **Check whether a "flavor-specific" behavior was actually flavor-specific.**
|
- **Check whether a "flavor-specific" behavior was actually flavor-specific.**
|
||||||
The Asterisk security-logging patch and the `logs/full` logrotate config
|
The Asterisk security-logging patch and the `logs/full` logrotate config
|
||||||
were droplet-only purely because that's where they got written first — the
|
were droplet-only purely because that's where they got written first — the
|
||||||
|
|||||||
+21
-2
@@ -298,6 +298,21 @@ register_service asterisk homelab "Easy Asterisk PBX (intercom/VoIP; auto-tunes
|
|||||||
# naming. Every sibling service in this repo (pstn-trunk, security-dashboard,
|
# naming. Every sibling service in this repo (pstn-trunk, security-dashboard,
|
||||||
# crowdsec) already probes for both directories, so both layouts stay fully
|
# crowdsec) already probes for both directories, so both layouts stay fully
|
||||||
# supported without further special-casing.
|
# supported without further special-casing.
|
||||||
|
#
|
||||||
|
# Container name itself: new installs use the plain "asterisk" (matching
|
||||||
|
# every other service's own container_name == service name convention —
|
||||||
|
# "easy-" was this repo's install-time container name before, left over from
|
||||||
|
# when the vendor CLI tool's own name (`easy-asterisk`, still installed at
|
||||||
|
# /usr/local/bin/easy-asterisk inside the container — unrelated, never
|
||||||
|
# renamed) got reused for the container too. A box that already has a
|
||||||
|
# running container is read directly from its own docker-compose.yml instead
|
||||||
|
# of assumed from the directory, so an existing "easy-asterisk" install
|
||||||
|
# keeps working with no silent rename — same reasoning as the droplet-layout
|
||||||
|
# preservation above, just one level down (container name, not directory).
|
||||||
|
# Migrating an existing box to the new name is a deliberate, one-time action
|
||||||
|
# (edit docker-compose.yml's container_name + coturn, `docker compose down`
|
||||||
|
# + `up -d`) — once done, every sibling service here re-reads it from that
|
||||||
|
# same file and follows automatically, no further changes needed anywhere.
|
||||||
_asterisk_resolve_layout() {
|
_asterisk_resolve_layout() {
|
||||||
if [[ -f "$DOCKER_DIR/asterisk-digital-ocean/docker-compose.yml" ]]; then
|
if [[ -f "$DOCKER_DIR/asterisk-digital-ocean/docker-compose.yml" ]]; then
|
||||||
ASTERISK_DIR="$DOCKER_DIR/asterisk-digital-ocean"
|
ASTERISK_DIR="$DOCKER_DIR/asterisk-digital-ocean"
|
||||||
@@ -306,9 +321,13 @@ _asterisk_resolve_layout() {
|
|||||||
ASTERISK_PROJECT="asterisk-do"
|
ASTERISK_PROJECT="asterisk-do"
|
||||||
else
|
else
|
||||||
ASTERISK_DIR="$DOCKER_DIR/asterisk"
|
ASTERISK_DIR="$DOCKER_DIR/asterisk"
|
||||||
ASTERISK_CONTAINER="easy-asterisk"
|
|
||||||
ASTERISK_COTURN="easy-asterisk-coturn"
|
|
||||||
ASTERISK_PROJECT="asterisk"
|
ASTERISK_PROJECT="asterisk"
|
||||||
|
ASTERISK_CONTAINER=""
|
||||||
|
if [[ -f "$ASTERISK_DIR/docker-compose.yml" ]]; then
|
||||||
|
ASTERISK_CONTAINER="$(grep -m1 '^[[:space:]]*container_name:' "$ASTERISK_DIR/docker-compose.yml" | awk '{print $2}')"
|
||||||
|
fi
|
||||||
|
[[ -z "$ASTERISK_CONTAINER" ]] && ASTERISK_CONTAINER="asterisk"
|
||||||
|
ASTERISK_COTURN="${ASTERISK_CONTAINER}-coturn"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+21
-6
@@ -1436,7 +1436,7 @@ _pstn_check_killswitch_clear() {
|
|||||||
# _pstn_install_periodic_timer above) ───────────────────────────────────────
|
# _pstn_install_periodic_timer above) ───────────────────────────────────────
|
||||||
_pstn_write_usage_alert_script() {
|
_pstn_write_usage_alert_script() {
|
||||||
local FILE="$1" EA_DIR="$2" ASTERISK_DIR="$3" RATE="$4" MONTH_THRESHOLD="$5" \
|
local FILE="$1" EA_DIR="$2" ASTERISK_DIR="$3" RATE="$4" MONTH_THRESHOLD="$5" \
|
||||||
BURST_THRESHOLD="$6" MAX_MONTHLY_SPEND="$7" NTFY_URL="$8" CONTAINER_NAME="${9:-easy-asterisk}"
|
BURST_THRESHOLD="$6" MAX_MONTHLY_SPEND="$7" NTFY_URL="$8" CONTAINER_NAME="${9:-asterisk}"
|
||||||
cat > "$FILE" << 'EOF'
|
cat > "$FILE" << 'EOF'
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Auto-generated by services/pstn-trunk.sh — do not edit directly, re-run
|
# Auto-generated by services/pstn-trunk.sh — do not edit directly, re-run
|
||||||
@@ -1719,7 +1719,7 @@ _pstn_apply_settings() {
|
|||||||
local EA_DIR="$1" ASTERISK_DIR="$2"
|
local EA_DIR="$1" ASTERISK_DIR="$2"
|
||||||
local SERVER="$3" SERVER_IPS="$4" DID="$5"
|
local SERVER="$3" SERVER_IPS="$4" DID="$5"
|
||||||
local RING_EXTS="$6" NTFY_URL="$7" RATE="$8" MONTH_THRESHOLD="$9" BURST_THRESHOLD="${10}"
|
local RING_EXTS="$6" NTFY_URL="$7" RATE="$8" MONTH_THRESHOLD="$9" BURST_THRESHOLD="${10}"
|
||||||
local PROVIDER_NAME="${11}" MAX_MONTHLY_SPEND="${12:-0}" CONTAINER_NAME="${13:-easy-asterisk}"
|
local PROVIDER_NAME="${11}" MAX_MONTHLY_SPEND="${12:-0}" CONTAINER_NAME="${13:-asterisk}"
|
||||||
|
|
||||||
_pstn_patch_vendor_files "$EA_DIR" || return 1
|
_pstn_patch_vendor_files "$EA_DIR" || return 1
|
||||||
|
|
||||||
@@ -1879,8 +1879,18 @@ install_pstn-trunk() {
|
|||||||
local KILLSWITCH_FILE="$ASTERISK_DIR/pstn-trunk-killswitch.conf"
|
local KILLSWITCH_FILE="$ASTERISK_DIR/pstn-trunk-killswitch.conf"
|
||||||
local PERSONAL_DIDS_FILE="$ASTERISK_DIR/pstn-personal-dids.conf"
|
local PERSONAL_DIDS_FILE="$ASTERISK_DIR/pstn-personal-dids.conf"
|
||||||
local SETTINGS_FILE="$EA_DIR/.pstn-trunk.env"
|
local SETTINGS_FILE="$EA_DIR/.pstn-trunk.env"
|
||||||
local CONTAINER_NAME="easy-asterisk"
|
# Read the box's own container_name instead of assuming — new installs
|
||||||
[[ "$ASTERISK_KIND" == "asterisk-digital-ocean" ]] && CONTAINER_NAME="easy-asterisk-do"
|
# use plain "asterisk" now, but an existing "easy-asterisk" install
|
||||||
|
# (this repo's container name before that rename) keeps working
|
||||||
|
# unchanged until someone deliberately migrates it. See
|
||||||
|
# services/asterisk.sh's _asterisk_resolve_layout for the reasoning.
|
||||||
|
local CONTAINER_NAME="asterisk"
|
||||||
|
if [[ "$ASTERISK_KIND" == "asterisk-digital-ocean" ]]; then
|
||||||
|
CONTAINER_NAME="easy-asterisk-do"
|
||||||
|
elif [[ -f "$EA_DIR/docker-compose.yml" ]]; then
|
||||||
|
CONTAINER_NAME="$(grep -m1 '^[[:space:]]*container_name:' "$EA_DIR/docker-compose.yml" | awk '{print $2}')"
|
||||||
|
[[ -z "$CONTAINER_NAME" ]] && CONTAINER_NAME="asterisk"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$DRY_RUN" = true ]; then
|
if [ "$DRY_RUN" = true ]; then
|
||||||
echo "[DRY-RUN] Would require an existing asterisk install (droplet or home/LAN)"
|
echo "[DRY-RUN] Would require an existing asterisk install (droplet or home/LAN)"
|
||||||
@@ -1988,8 +1998,13 @@ install_pstn-trunk() {
|
|||||||
# never picking up dialplan changes at all. Re-assert the fresh
|
# never picking up dialplan changes at all. Re-assert the fresh
|
||||||
# detection here, discarding the sourced value, so it can't drift
|
# detection here, discarding the sourced value, so it can't drift
|
||||||
# from reality and self-heals the persisted file too.
|
# from reality and self-heals the persisted file too.
|
||||||
CONTAINER_NAME="easy-asterisk"
|
CONTAINER_NAME="asterisk"
|
||||||
[[ "$ASTERISK_KIND" == "asterisk-digital-ocean" ]] && CONTAINER_NAME="easy-asterisk-do"
|
if [[ "$ASTERISK_KIND" == "asterisk-digital-ocean" ]]; then
|
||||||
|
CONTAINER_NAME="easy-asterisk-do"
|
||||||
|
elif [[ -f "$EA_DIR/docker-compose.yml" ]]; then
|
||||||
|
CONTAINER_NAME="$(grep -m1 '^[[:space:]]*container_name:' "$EA_DIR/docker-compose.yml" | awk '{print $2}')"
|
||||||
|
[[ -z "$CONTAINER_NAME" ]] && CONTAINER_NAME="asterisk"
|
||||||
|
fi
|
||||||
_pstn_check_killswitch_clear "$ASTERISK_DIR"
|
_pstn_check_killswitch_clear "$ASTERISK_DIR"
|
||||||
_pstn_apply_settings "$EA_DIR" "$ASTERISK_DIR" \
|
_pstn_apply_settings "$EA_DIR" "$ASTERISK_DIR" \
|
||||||
"$TRUNK_SERVER" "${TRUNK_SERVER_IPS:-}" "$TRUNK_DID" \
|
"$TRUNK_SERVER" "${TRUNK_SERVER_IPS:-}" "$TRUNK_DID" \
|
||||||
|
|||||||
@@ -105,7 +105,15 @@ install_security-dashboard() {
|
|||||||
if [[ "$ASTERISK_EA_DIR" == *asterisk-digital-ocean ]]; then
|
if [[ "$ASTERISK_EA_DIR" == *asterisk-digital-ocean ]]; then
|
||||||
ASTERISK_EA_CONTAINER="easy-asterisk-do"
|
ASTERISK_EA_CONTAINER="easy-asterisk-do"
|
||||||
elif [ -n "$ASTERISK_EA_DIR" ]; then
|
elif [ -n "$ASTERISK_EA_DIR" ]; then
|
||||||
ASTERISK_EA_CONTAINER="easy-asterisk"
|
# Read the box's own container_name instead of assuming — new
|
||||||
|
# installs use plain "asterisk" now, but an existing "easy-asterisk"
|
||||||
|
# install (this repo's container name before that rename) keeps
|
||||||
|
# working unchanged until someone deliberately migrates it. See
|
||||||
|
# services/asterisk.sh's _asterisk_resolve_layout for the reasoning.
|
||||||
|
if [[ -f "$ASTERISK_EA_DIR/docker-compose.yml" ]]; then
|
||||||
|
ASTERISK_EA_CONTAINER="$(grep -m1 '^[[:space:]]*container_name:' "$ASTERISK_EA_DIR/docker-compose.yml" | awk '{print $2}')"
|
||||||
|
fi
|
||||||
|
[[ -z "$ASTERISK_EA_CONTAINER" ]] && ASTERISK_EA_CONTAINER="asterisk"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
@@ -53,7 +53,15 @@ _sms_detect_container_name() {
|
|||||||
if [[ "$_ea_dir" == *asterisk-digital-ocean ]]; then
|
if [[ "$_ea_dir" == *asterisk-digital-ocean ]]; then
|
||||||
echo "easy-asterisk-do"
|
echo "easy-asterisk-do"
|
||||||
else
|
else
|
||||||
echo "easy-asterisk"
|
# Read the box's own container_name instead of assuming — new
|
||||||
|
# installs use plain "asterisk" now, but an existing "easy-asterisk"
|
||||||
|
# install (this repo's container name before that rename) keeps
|
||||||
|
# working unchanged until someone deliberately migrates it. See
|
||||||
|
# services/asterisk.sh's _asterisk_resolve_layout for the reasoning.
|
||||||
|
local _name=""
|
||||||
|
[[ -f "$_ea_dir/docker-compose.yml" ]] && \
|
||||||
|
_name="$(grep -m1 '^[[:space:]]*container_name:' "$_ea_dir/docker-compose.yml" | awk '{print $2}')"
|
||||||
|
echo "${_name:-asterisk}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -56,9 +56,13 @@ fi
|
|||||||
# ── Container + directory detection ─────────────────────────────────────────
|
# ── Container + directory detection ─────────────────────────────────────────
|
||||||
section "Detecting install"
|
section "Detecting install"
|
||||||
|
|
||||||
CONTAINER="$(docker ps --format '{{.Names}}' 2>/dev/null | grep -m1 -E '^easy-asterisk(-do)?$' || true)"
|
# "asterisk" is this repo's current container name; "easy-asterisk" is what
|
||||||
|
# an install kept from before that rename (never silently renamed under a
|
||||||
|
# running deployment); "easy-asterisk-do"/"asterisk-do" cover a DigitalOcean
|
||||||
|
# droplet install, old or new naming. Whichever is actually running wins.
|
||||||
|
CONTAINER="$(docker ps --format '{{.Names}}' 2>/dev/null | grep -m1 -E '^(easy-)?asterisk(-do)?$' || true)"
|
||||||
if [ -z "$CONTAINER" ]; then
|
if [ -z "$CONTAINER" ]; then
|
||||||
fail "No running easy-asterisk / easy-asterisk-do container found — is asterisk installed and started?"
|
fail "No running asterisk / easy-asterisk / *-do container found — is asterisk installed and started?"
|
||||||
echo ""
|
echo ""
|
||||||
echo " $PASS passed, $WARN warnings, $FAIL failed. Stopping — nothing else can be checked without a running container."
|
echo " $PASS passed, $WARN warnings, $FAIL failed. Stopping — nothing else can be checked without a running container."
|
||||||
exit 1
|
exit 1
|
||||||
@@ -196,8 +200,7 @@ if [ -z "$TURN_SERVER" ]; then
|
|||||||
warn "Add it via: sudo ./setup.sh asterisk (update mode)"
|
warn "Add it via: sudo ./setup.sh asterisk (update mode)"
|
||||||
else
|
else
|
||||||
if grep -q '^ coturn:' "$EA_DIR/docker-compose.yml" 2>/dev/null; then
|
if grep -q '^ coturn:' "$EA_DIR/docker-compose.yml" 2>/dev/null; then
|
||||||
COTURN_CONTAINER="easy-asterisk-coturn"
|
COTURN_CONTAINER="${CONTAINER}-coturn"
|
||||||
[[ "$CONTAINER" == *-do ]] && COTURN_CONTAINER="easy-asterisk-do-coturn"
|
|
||||||
ok "Using an embedded, per-Asterisk coturn ($COTURN_CONTAINER); tested separately below."
|
ok "Using an embedded, per-Asterisk coturn ($COTURN_CONTAINER); tested separately below."
|
||||||
else
|
else
|
||||||
COTURN_CONTAINER="coturn"
|
COTURN_CONTAINER="coturn"
|
||||||
|
|||||||
Reference in New Issue
Block a user