Universal Install curl -fsSL https://raw.githubusercontent.com/limbanidhairya/hostingsignal/main/install.sh | bash Install Guide

HostingSignal Handoff

Date: 2026-03-15 Scope: 2086 daemon panel reliability fixes, database flow fixes, phpMyAdmin access, and button wiring stabilization.

1) Fixes Implemented

A. Database create and DB user create failures fixed

  • Root cause: MySQL statements were executed through shell-interpreted command strings, so SQL backticks were interpreted by shell substitution.
  • Fix:
    • Reworked SQL execution to argument-list process execution with IPC::Open3.
    • Added safer stdout/stderr capture and return handling.
  • File:
    • usr/local/hspanel/perl/HS/Database.pm

B. DB user password change implemented

  • Added backend function:
    • change_user_password(username, password) in database module.
  • Wired UI button to real form submission and prompt-driven flow.
  • Files:
    • usr/local/hspanel/perl/HS/Database.pm
    • usr/local/hspanel/templates/ui/databases.tmpl

C. phpMyAdmin button routing fixed

  • Root cause: database page linked to /phpmyadmin, but daemon route logic expects software redirect path for panel flow.
  • Fix:
    • Updated link to /software/phpmyadmin.
  • File:
    • usr/local/hspanel/templates/ui/databases.tmpl

D. Domain creation failed on OpenLiteSpeed reload

  • Root cause: wrapper operation could fail on runtime mismatch/stale binary support.
  • Fix:
    • Added fallback reload attempts in sequence:
      • /usr/local/lsws/bin/lswsctrl restart
      • systemctl reload lsws
      • systemctl restart lshttpd
      • systemctl restart openlitespeed
  • File:
    • usr/local/hspanel/perl/HS/Web.pm

E. Mail subsystem operation resilience improved

  • Root cause: postmap path assumptions and wrapper-only reload path could fail on some hosts.
  • Fix:
    • Added postmap path fallback list (/usr/sbin/postmap, /sbin/postmap, postmap).
    • Added postfix/dovecot reload fallback list via wrapper and direct systemctl.
  • File:
    • usr/local/hspanel/perl/HS/Mail.pm

F. Email action buttons wired to working actions

  • Webmail button now opens /webmail/.
  • Mail password change button now submits to backend (/api/mail/change_password).
  • File:
    • usr/local/hspanel/templates/ui/email.tmpl

2) Runtime Deployment Performed

Deployed updated workspace files into live WSL runtime path:

  • /usr/local/hspanel/perl/HS/Database.pm
  • /usr/local/hspanel/perl/HS/Web.pm
  • /usr/local/hspanel/perl/HS/Mail.pm
  • /usr/local/hspanel/templates/ui/databases.tmpl
  • /usr/local/hspanel/templates/ui/email.tmpl

Service action performed:

  • systemctl restart hostingsignal-daemon

3) Validation Results

Validated with direct HTTP requests against running daemon:

  • DB create:
    • POST /api/database/create -> 302 to /databases?ok=1
  • DB user create:
    • POST /api/database/create_user -> 302 to /databases?ok=1
  • DB user password change:
    • POST /api/database/change_user_password -> 302 to /databases?ok=1
  • Mail password change:
    • POST /api/mail/change_password -> 302 to /email?ok=1
  • Domain create:
    • POST /api/web/create_vhost -> 302 to /domains?ok=1
  • phpMyAdmin route:
    • GET /software/phpmyadmin with panel cookie -> 302 to /phpmyadmin/

Daemon API log confirms successful operation entries for the above flows.

4) Current Known Issues

High Priority

  1. Some panel pages still have placeholder action buttons without backend wiring
    • Affected templates include (at minimum):
      • usr/local/hspanel/templates/ui/cron.tmpl (edit/delete placeholders)
      • usr/local/hspanel/templates/ui/backups.tmpl (download/restore/delete placeholders)
      • usr/local/hspanel/templates/ui/ssl.tmpl (force renew/delete placeholders)
      • usr/local/hspanel/templates/ui/dns_editor.tmpl (edit/delete placeholders)
  2. phpMyAdmin still depends on external webserver path
    • Panel now redirects correctly, but actual phpMyAdmin availability depends on web stack configuration at /phpmyadmin/.

Medium Priority

  1. Wrapper binary feature drift risk remains
    • Source file advertises operations like reload_lsws, reload_postfix, reload_dovecot, but deployed binary may lag source.
    • Current mitigations exist in Perl modules via fallbacks; wrapper binary should still be rebuilt/redeployed to align fully.
  2. Mail module warning to clean up
    • Perl warning seen: Name "maildir::userdb_quota_rule" used only once.
    • This does not block function, but should be cleaned for code hygiene.
  1. Wire all remaining placeholder action buttons to real APIs in cron/backups/ssl/dns templates.
  2. Add/confirm missing backend methods in:
    • HS::Cron
    • HS::Backup
    • HS::SSL
    • HS::DNS
  3. Rebuild/redeploy wrap_sysop from usr/local/hspanel/bin/wrap_sysop.c and revalidate wrapper operations.
  4. Add a deterministic regression script that exercises all panel action routes and checks redirect success states.

6) Operational Notes

  • The critical production blocker (database actions failing due to shell execution) is now fixed and verified live.
  • The most user-visible core action failures reported in this cycle are resolved.
  • Remaining failures are primarily unimplemented placeholder actions rather than core transport/auth breakage.

7) Local Services Installer Continuation (2026-03-15)

Implemented in this continuation

  • Fixed compose rendering stability in scripts/local_installer.py by emitting deterministic YAML.
  • Fixed local stack path resolution so binds/build contexts target repo roots (../../services, ../../data) from runtime/local-stack/docker-compose.yml.
  • Added cache data dir scaffolding (data/cache/redis) during layout creation.
  • Cleaned root installer entrypoint:
    • install.sh now only wraps to scripts/local_installer.py.
  • Updated compose manager behavior:
    • core/service-manager/service_manager.py now injects configured compose profiles by default.
    • Added compose command compatibility detection for both docker compose and docker-compose.
  • Added installer-side compose command compatibility detection in scripts/local_installer.py.

Current validation results

  • Local installer generation path works:
    • --non-interactive --web apache --db mariadb --skip-start writes valid configs/install-config.json, .env, compose file, and service workspace assets.
  • Compose validation works when a compose command exists:
    • python core/service-manager/service_manager.py validate returns parsed config successfully in PowerShell context.

Current blockers (environment/runtime)

  1. Windows host Docker daemon is unavailable in current session:
    • docker info fails with missing dockerDesktopLinuxEngine pipe.
  2. WSL distro currently has Docker CLI but no compose command available:
    • docker compose is unsupported.
    • docker-compose command is missing.
    • Docker Desktop WSL integration appears disabled or unavailable for this distro.

Unblock checklist for next operator

  1. Start Docker Desktop (or ensure Linux Docker daemon is running) on host.
  2. Enable WSL integration for the target distro in Docker Desktop settings.
  3. Confirm one compose interface exists inside WSL:
    • docker compose version or
    • docker-compose --version
  4. Re-run:
    • bash ./install.sh --non-interactive --web apache --db mariadb
  5. Validate and smoke-test:
    • python core/service-manager/service_manager.py status
    • python scripts/test_local_stack.py

Scope status summary

  • Installer architecture and local service scaffolding: implemented.
  • Compose/service-manager integration: implemented.
  • Runtime bring-up and smoke-tests: blocked by Docker runtime availability on current machine.