Oh boy this is a cool one, we've been giving the scripts feature the home it deserved. What used to be a single edit page with a "run on these servers" checkbox at the bottom is now a proper toolkit: dedicated pages to run, schedule, and react to events on your servers, with every action recorded, revocable, and visible in real time.
If you live in the panel, scripts now look and feel like a first-class part of Ploi — searchable, sortable, and filterable, using the same table as the rest of the panel. If you're an automation person, this update is the one you've been waiting for.
A dedicated home for every script
The script edit page used to do three jobs at once: edit, run, and dump live output. We split it.
Edit — just the editor. Nothing else.
Run — a clean run page with a server picker, live streaming logs per server, and nothing in your way.
Schedule — manage recurring runs of this script.
Actions — wire this script to server events.
The index now has search, sort, column toggling, and bulk delete — same table you already know from the rest of the panel. Each row has Run / Edit / Schedule / Actions / Delete buttons so you can jump straight to what you came for.
Scripts on a cron schedule (Pro plan)

Put any script on a recurring cron and let Ploi handle the rest. No crontab -e on every box, no SSH dance — schedules live in Ploi and fire across as many servers as you like, every matching minute.
Standard cron syntax (
* * * * *) with quick presets for the most common intervals — every minute, every 5/10/15/30 minutes, hourly, daily at midnight or 03:00, weekly, monthly.One schedule, many servers — pick a script, pick a cron expression, pick a set of servers, done.
Pause and resume in one click. No SSH, no destructive edits.
Next-run and last-run shown inline so you always know where a schedule is in its cycle.
Script actions: react to what happens on the server (Unlimited plan)

This is the headline feature. Tie a script to a server event and Ploi will run it automatically when that event fires. We start with the two most-requested triggers:
Server has booted — runs once your server reaches a network-online state after boot. Perfect for warming caches, sending a heartbeat, or running post-reboot sanity checks.
Server is shutting down — best-effort fire on graceful shutdown. Great for flushing in-memory state or letting a downstream service know the box is going away.
Under the hood, each action installs a tiny systemd unit on every selected server, calling back to Ploi over a signed webhook when the event fires. We then queue your script for execution, exactly the same as if you'd clicked Run yourself.
The actions page shows you live status per server — installing, installed, or failed with the exact error — so you never have to wonder whether a unit landed. Pause an action without uninstalling it, ship a fix, resume it. No SSH required.
We'll be adding more events very soon!
Built secure by default
Script actions hold a webhook URL that gets embedded into a systemd unit on your servers. We treat those URLs the way you'd want us to:
Signed URLs — every webhook URL is HMAC-signed with your application key. Tampering with any part of the URL invalidates it.
Per-action revocable secret — every action carries its own secret that's bound into the signature. Rotating that secret instantly invalidates every previously-issued URL for that action.
Root-only unit files — installed unit files are
chmod 600, so non-root users on the server can't read the embedded URL.
Try it
If you're already on Ploi, the new scripts pages are live in your panel. Pop over to Scripts and have a click around — even the old "create a script, run it on a server" flow has a fresh coat of paint.
If you're not on Ploi yet, scripting is one of those features you reach for the moment you have more than one server. This is a great moment to give it a try.
Added
Schedule scripts on a cron expression across multiple servers, with pause/resume and live next-run info (Pro plan)
Script actions: trigger a script automatically when a server boots or shuts down via a signed Ploi webhook (Unlimited plan)
Dedicated Run, Schedule, and Actions pages for every script — no more cramming everything onto the edit page
A new searchable, sortable scripts list with column toggles and bulk delete
Per-action revocable webhook secret, on top of the existing signed URL, so leaked URLs can be rotated instantly
Live deploy log persists on the site so it survives page reloads
Graceful reload action on the services API
Improved
Server provisioning falls back to
archive.ubuntu.comwhenmirror.hetzner.comis having a bad dayRemoved dead Apache and hybrid Apache paths from the web server provisioning code, simplifying the install
Fixed
Deleting a server no longer hangs when the underlying box has already been powered off
A failed PHP installation now correctly stops the rest of the server install chain instead of carrying on regardless
Turning off Octane no longer leaves stray queue workers running in the background
UpCloud server provisioning works again after a breaking change in one of our upstream libraries
The API key edit form no longer shows an editable scopes field — scopes are locked in at the moment the key is issued, so we removed the misleading control