Version: 2.1.0
2.1.1
A repair release for servers on the native stack, plus per-account permission groups. Almost everything here is something that was quietly wrong in 2.1.0 rather than a new capability — and most of it failed in silence, which is why it took a customer to find it.
Fixed​
- Adding a domain failed with "Error adding domain name". root's MySQL
client had credentials but no default schema, so every plain
mysql -ein the CLI came back with No database selected. The same cause showed up as "Docroot not found for domain" and, on the Change Docroot page, as a raw SQL statement printed into the page. - Template changes never reached the servers. The deploy shipped them beside the live set and nothing copied one to the other, so no fix to a vhost template had ever taken effect.
- Links jumped to port 8188. nginx built its directory redirects out of its
own loopback port, sending visitors to
http://<domain>:8188/. - Changing a plan took up to a day to reach the customer. Three places
tried to invalidate the cached feature list and none could: they dropped keys
named after functions that stopped existing when the panel was rewritten in
Go.
hitechcloudcli cache-forget_featuresis now the one place that knows the key shapes, and everything that changes a plan calls it. - CPU and Memory sat at "Calculating.." forever. They were fed by a sampler that read what Docker reported. They are measured from the account's own cgroup and processes now, against the plan's allowance — never the machine's totals.
- The Site Manager was empty for a site that was serving. Only CMS installations were recorded; a document root serving plain files is a website too.
- ImunifyAV, Git deployment and MSSQL answered 404. Saving Settings → Modules deleted any module missing from the admin's catalogue, because the form posts only the boxes it rendered. It keeps what it could not show now.
- SSL status read "Unknown" for a domain holding a valid certificate; domain access logs were read from the old Caddy path in the old Caddy format; site previews could not decode what the screenshot API returned, and gave up after five seconds on a job that takes thirty.
Added​
- Permission groups. A named set of module permissions that an administrator can assign to an account, and an account can hold several. The effective set is the plan's features plus every group held — a plan is the floor, a group grants something extra without needing a new plan.
- Wildcard certificates. Where this server runs the domain's DNS, a
*.<domain>certificate is issued over DNS-01 against a dedicated challenge zone, with no configuration and no third party. Where the DNS is elsewhere, pick a provider and give it credentials. - Deploy a website from Git, with the build running as the account, in a staging directory that is only swapped in once it succeeds.
- Microsoft SQL Server, alongside MySQL and PostgreSQL.
- ImunifyAV for hosting accounts, scoped to the account's own files.
Security​
- A hosting account can no longer stop or restart the machine's MariaDB,
Postfix or PHP-FPM masters. That is the administrator's, and it is off unless
native_service_control=yessays otherwise — right for a single-tenant box, wrong for shared hosting. - Two application installers unpacked into the account's own directory as root, which a symlink planted between the check and the write turns into a root write anywhere on the disk. They run as the account now.
- The per-account usage file was written by root into a directory the account owns and controls; the same class of problem, found by review before it shipped.
- Saving
php.inireloads PHP at most once every ten seconds per version: a reload applies to every site on that version, so one account could otherwise keep everybody else's PHP restarting. - The report listing every account's disk and inode usage is no longer world-readable.
Was this helpful?