Contact form subject options now match the five service lines on the site:
New Project Inquiry, Mesh Networking, Managed Services, Structured
Cabling, Access Control, IP Camera Systems, Technical Support, Other.
Removed the old ISP-generic options (billing, coverage, new-service).
Updated $subject_labels in admin-inbox.php to match.
README updates:
- ADMIN_PASS added to web container env vars table and env vars section
- Project structure updated to include db.php and admin-inbox.php
- Milestone 1 contact form item updated to note MySQL storage
- Milestone 4 marks contact DB storage and staff inbox as complete;
email notification remains as the next open item
https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
/mnt/user is a FUSE filesystem on Unraid that is unavailable inside
Docker containers. The container sees an empty /var/www/html, Apache
finds no index.php, and returns 403 because Options -Indexes is set.
All volume mount paths and git clone instructions updated to use the
cache drive path (/mnt/cache/appdata/alwisp) directly. Added an
explanatory warning note in Step 1.
https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
Unraid Container Builder creates directories at mount points by default,
which fails when the container already has a file at that path. Moving
000-default.conf from a bind-mount to a COPY in the Dockerfile avoids
the OCI runtime error and is the correct pattern — config files belong
in the image, only persistent data should be mounted as volumes.
https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
Add --pull=never to Extra Parameters so Unraid doesn't try to pull
alwisp_web:latest from Docker Hub. The image is built locally in Step 2
and only exists on the host — without this flag the container fails to
start with 'pull access denied'.
https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
Replace Docker Compose Manager steps with per-container Container Builder
setup. Each container (web, db, pma) gets its own fixed LAN IP via br0,
removing the need for port mapping. DB_HOST env var now points to the
database container's br0 IP instead of the internal Docker hostname.
https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd