AST_CONFIG() silently returns an empty string instead of erroring when asterisk.conf's [options] section lacks live_dangerously = yes, so a correct tier_out=full in pstn-permissions.conf still evaluates as no permission — every outbound/ring-group call gets denied with nothing in the logs pointing at the real cause. Easy Asterisk's vendor default ships without this set. Now applied automatically on fresh install and on every "update" rebuild, restarting only when the file actually changes.
5.0 KiB
TODO — scratch tracking doc
Not a permanent part of this repo's docs. This exists purely to hold the state of a few in-flight/queued items across sessions until they're either finished or turned into real issues/PRs — delete this file once that's done.
1. Asterisk DigitalOcean → IONOS migration
State: resolved. Migrated talk.mydomain.com from a DigitalOcean
droplet to an IONOS VPS, keeping the same domain (repointed the A record,
no Anveo trunk changes needed). Hit and fixed several real bugs surfaced
by the migration:
- Standalone backup/restore script now auto-corrects the baked-in external
IP on a cross-box restore, and reconciles the two directory layouts
(
asteriskvsasterisk-digital-ocean) instead of leaving a stray second directory behind. app_voicemail/app_voicemail_imap/app_voicemail_odbcmodule-load collision, breaking voicemail on every install — fixed at its real source (vendor'sentrypoint.shregeneratesmodules.confon every container start, so the fix has to live in the template, not a host-side file write).DEVICE_MARKER_REin the Security Dashboard had two comment fields in the wrong order, solist_extensions()silently returned nothing for every device on every install — this, not anything migration-specific, was why Messaging/Voicemail toggles never stuck.- Registration bounce on ext 201 traced to Sipnetic's non-standard "use TURN for registration" option, not to anything server-side (DNS, firewall, coturn, and CrowdSec were all individually confirmed clean). Turning that client-side toggle off resolved it; TURN itself is confirmed working correctly for its actual job (call media, verified with a real two-way test call).
- Restoring an Asterisk backup silently drops the Security Dashboard's
file-read ACLs (new inodes from the extraction never had them) — now
documented and the restore script prints a reminder to re-run
sudo ./setup.sh security-dashboardafterward. - All outbound (and ring-group inbound) PSTN calls silently denied, every
time, with zero errors or warnings anywhere in the logs. Took an
extended live debugging session working through firewalls (IONOS's
separate Cloud Panel network firewall — a real, separate issue, but not
this one), Anveo's IP allowlists, and IONOS-vs-DigitalOcean network
theories before finding it:
asterisk.confneedslive_dangerously = yesunder[options]forAST_CONFIG()to actually work — without it, everyAST_CONFIG()read (pstn-permissions.conf tiers, the PSTN kill-switch) silently returns an empty string instead of erroring, so a perfectly correcttier_out = fullin pstn-permissions.conf still evaluates as no permission. Not IONOS-specific at all — Easy Asterisk's vendor default just ships without it, and the old DigitalOcean box apparently had it set by hand at some point with no record of why. Now fixed at the source:_asterisk_ensure_live_dangerously()inservices/asterisk.sh, called after every fresh install and every "update" rebuild.
Loose end: no code fix pending, just keep an eye out in case the registration bounce recurs (would point back at Sipnetic/coturn rather than anything server-side, per the above).
2. Web-based extension messaging
State: not started. Explicitly deferred behind the Asterisk migration and stability work above, which is now resolved — this is next up whenever picked back up. No design decisions made yet.
3. Pi-hole service
State: done. services/pihole.sh exists, is registered
(register_service pihole utilities ...), and is documented in the
README's services table. Runs as a standalone DNS ad/tracker blocker —
its own description already flags the one thing it doesn't do yet:
"not wired into any VPN's DNS push." That gap is exactly item 4 below.
4. VPS as a VPN tunnel endpoint for privacy/security
State: not started — idea stage. Use the VPS as a VPN endpoint
(WireGuard, presumably via the existing wg-easy service already in this
repo) so a client's traffic, destination, and origin IP are all obscured
from its local network/ISP. Wants DNS resolution over the tunnel to go
through an encrypted upstream (NextDNS or ControlD, DoH/DoH3/DoT — exact
protocol TBD) rather than the VPS's own resolver or the client's ISP DNS,
so DNS queries aren't a side-channel leak of browsing activity even though
the tunnel itself hides traffic/destination.
Natural tie-in to item 3: point wg-easy's pushed DNS at Pi-hole running
on the same box (Pi-hole already supports upstream DoH/DoT to something
like NextDNS/ControlD instead of plain DNS), rather than building a
separate DNS path — gives ad/tracker blocking and encrypted upstream
resolution for anything routed through the tunnel, closing the gap
Pi-hole's own description already calls out.
No design work done yet — open questions: which encrypted-DNS provider,
whether Pi-hole's own DoH/DoT upstream support is sufficient or a
separate proxy (e.g. cloudflared-style) is needed, and whether this is a
new service file or an enhancement to wg-easy.sh/pihole.sh.