NewImprovedFixedSecurity

v2.9.7.5

See what you own under My Purchases, and know exactly what a server resize costs

You can now see every lifetime plan, server plan and add-on you own in one place, and what each one is used for. The resize screen now tells you in plain words what you pay today and why. Docker backups are safer, and they now tell you when they fail.

🔥 New Features

🆕 See Everything You Own Under My Purchases

Before, the purchase pages only listed what you had not used yet, so it was hard to tell which plan a server was on. Now Settings has a My Purchases menu that shows what you own and what uses it.

Who it’s for: Everyone with a lifetime plan, a paid server plan or an add-on.

  • xCloud Control Panel. One card per lifetime plan, with a bar that shows how many servers you have used and how many are free. It links to the servers using the plan. Connect a server shows when you have free slots, and Get more servers takes you to the upgrade. If you bought the same plan twice, the slots are added together.
  • Servers & Add-ons. Servers and Add-ons tabs, each with Continue Setup for what you have not used yet and In use for what is running, with its billing period and start date.
  • Site Security Pro has moved. It now lives in the Add-ons tab. The old Site Security Pro page opens it there.
  • White-label clients see Servers & Add-ons with their reseller’s plan names.

🧑‍💻 For Developers: Public API and MCP

  • Site Rules. Create, edit and delete a site’s headers and redirects with POST /api/v1/sites/{uuid}/web-rules, PUT and DELETE /api/v1/sites/{uuid}/web-rules/{webRule}. They use the same checks as the dashboard. If the server’s configuration test fails, the change is rolled back and you get the reason. Site Rules need a paid plan. All three are MCP tools that ask for your confirmation.
  • Managed PostgreSQL. Check a server with GET /api/v1/servers/{uuid}/postgresql, which says whether it can have managed PostgreSQL and why not. Install it with POST /api/v1/servers/{uuid}/postgresql and retry a failed install with POST /api/v1/servers/{uuid}/postgresql/retry. They are also MCP tools. pgAdmin is still managed from the dashboard. Install managed PostgreSQL and pgAdmin
  • Clearer refusals. POST /api/v1/servers/{uuid}/services/install now explains why a service cannot be installed, and points you to the PostgreSQL install when you ask for postgresql.
  • Free mailbox settings. GET /api/v1/addons/mailbox/{uuid}/pop, /imap and /smtp now return webmail_only: true and a webmail link for a free mailbox, with no connection details. Paid mailboxes return webmail_only: false with the same settings as before.
  • Site creation scope. A token with write:servers can now create a site on an existing server, as the API docs say. Team permission checks still apply.

🔒 Security

  • Database passwords stay with the right people. A team member without permission to manage a site’s database no longer sees its password or connection link on the SSH/SFTP page.
  • Snapshots need the snapshot permission. A team member without it can no longer take a site snapshot.
  • AI Bot Blocker is safer on OpenLiteSpeed. It now edits the site’s .htaccess file as the site user, so a file planted in the site can no longer trick the server into overwriting system files.
  • Passwords stay out of logs. The password used to set up an SFTP user during a migration no longer appears in task logs.

⚡ Improvements

  • Resize a server with a clear price. The Resize server screen now shows what changes and You pay now at the top, split into the new plan, its backups and your credit for time you did not use. How we worked out your credit explains the credit in sentences. In Server → Settings, the table now reads Now and After resize, with the Monthly price including backups. How server resize charges work
  • Free mailboxes say they are webmail-only. On a free mailbox, the POP, IMAP and SMTP tabs now explain that email apps need a paid mailbox plan. Upgrade Mailbox and Access Webmail buttons sit right there. Before, these tabs showed connection details that could never log in. Configure an email client with the Mailbox add-on
  • Faster Backups page. A site’s Backups page now loads faster when it has many incremental backups.
  • Node.js apps move to the new version. After you change a server’s Node.js major version, running PM2 apps are reloaded onto it. Before, they kept running the old version until you reloaded them by hand.
  • Scheduled tasks run on time. One slow scheduled task no longer holds up the rest. For example, temporary sudo users are now removed when they expire.

🐞 Bug Fixes

  • Docker backups
    • A remote backup no longer deletes the site’s local backups. Your local retention setting is kept.
    • A failed Docker backup now tells you. If a scheduled Docker backup fails, it now appears in the backup failure email we send you, and Backup Now sends an email at once. Both give a readable reason.
  • Backups
    • Restoring an incremental backup now restores the exact point you picked, not the one before it.
    • Scheduled incremental backups no longer stop when server or team backup defaults are set on the same storage.
  • Server setup
    • AWS servers no longer stop at 14% during setup.
    • A sudo user that could not be deleted now shows as failed instead of deleted.
  • Sites
    • Creating a site from Git no longer fails when the database is briefly busy.
    • When the server refuses an SSH/SFTP change, you now see clear advice to try again, without raw server output. Your saved settings stay as they were.
    • Firewall switches turned off with a bulk change now show as off on the Security page.
    • A clone of an OpenLiteSpeed site now keeps PHP process settings that are set to 0.
  • Cloudflare
    • Cloudflare Enterprise domains now finish setup and go live.
  • White label
    • Log export, client report, SSH key, storage and broken-link emails now use the reseller’s sender, logo and brand. Their buttons and footer links open on the reseller’s domain.
    • Custom SMTP on port 8465 now connects securely. A saved port that is not a number now falls back to the default mailer instead of failing.