Product

New Release v1.5.16

R
Raj Kavin
· Apr 29, 2026 · 5 min read

What's New

This release brings two big improvements to how you work with applications on ServerPlane: the terminal and file manager are now app-aware (run commands and edit files as the right Linux user automatically), and Laravel apps gain first-class stack options for Node.js, the scheduler, and queue workers.


Web Terminal — Connect as App User

Previously, the terminal always logged you in as the default server user (typically root or serverplane). That's convenient, but if you ran something like composer install, npm run build, wp plugin install, or even just edited a file, the resulting files were owned by root — which often broke PHP-FPM, PM2, or your application's ability to read or write its own files.

Now, when you open the terminal, you'll see a Connect as dropdown in the status bar:

  • Default — connects as the server's SSH user (the existing behavior).
  • Your apps — pick any app on the server and the terminal will drop you straight into its root directory, running as that app's dedicated Linux user (e.g. sp_wordpress_xyz).

Once connected, a small as <username> badge appears in the status bar so you always know which user you're operating as.

File Manager — Operate as App User

The file manager now mirrors the same model. After picking a server, you'll see a new app selector:

  • Server (root) — browse system paths like /etc/nginx/, /var/log/, etc., as before.
  • Pick an app — file listing jumps to the app's root path, and every action (create, edit, delete, rename, copy, paste, upload, extract, compress, search, chmod) runs as the app's user.

Files you upload or create through the file manager in app context now land owned by the correct app user automatically — no more "permission denied" surprises after editing wp-config.php or .env.

Fix Permissions

For cases where files have ended up with the wrong ownership (e.g. an older root-mode terminal session left files owned by root), there's a new Fix Permissions action available in two places:

  • App detail page — right next to the Restart/Stop buttons.
  • File manager toolbar — visible whenever an app is selected.

Clicking it recursively resets ownership and standard permissions across the entire app directory:

  • Owner / group → the app's system user
  • Directories → 755
  • Files → 644

It's a one-click recovery for any permission drift, and it's safe to run anytime.

Why this matters

These changes remove a whole class of "it worked yesterday" issues caused by mixed file ownership. You no longer have to remember to sudo -u <appuser> before running commands, and you no longer have to manually chown files after editing them. The platform now does the right thing by default.

Behind the scenes

  • The terminal proxy negotiates sudo -u <appuser> --login automatically when you select an app, so privilege drop happens server-side via your existing sudoers configuration — no new permissions or setup required.
  • File manager operations route through a validated runAs user parameter, so commands execute under the app's user account end-to-end.
  • All app/user selections are validated against your team's apps and the underlying Linux usernames are strictly format-checked before being used in any shell command.

Laravel Apps — New Stack Options

We've expanded the optional stacks available for Laravel applications. When deploying a new Laravel app (or managing an existing one), you can now toggle:

Node.js

Install Node.js (v18, v20, or v22) alongside PHP. If your repository has a package.json and you haven't set a custom build command, ServerPlane will automatically run npm ci && npm run build during deployment — Vite and asset pipelines now work out of the box.

Scheduler

One-click setup for Laravel's task scheduler. Adds a managed cron entry that runs php artisan schedule:run every minute. The entry appears in the Cron Jobs tab and can be edited or disabled like any other cron job.

Queue Worker

Run php artisan queue:work as a Supervisor-managed daemon with auto-restart. Choose your queue connection (redis, database, or sync). The worker appears in the Daemons tab where you can start, stop, view logs, or scale the number of processes. Selecting redis automatically installs Redis on the server.

Stacks Tab (existing apps)

Existing Laravel apps now have a Stacks tab that auto-detects what's currently in use:

  • Inspects your live .env for CACHE_DRIVER, QUEUE_CONNECTION, and SESSION_DRIVER to detect Redis usage
  • Checks for package.json in your app directory to detect Node.js usage
  • Reads existing cron jobs and daemons to detect scheduler / queue worker entries

Toggle anything on, hit save, and the missing pieces are installed and configured immediately — no redeploy required.

Why

Almost every modern Laravel app needs Node for Vite, a scheduler for queued tasks, and a worker for background jobs. Until now you had to SSH in and wire those up by hand. This brings them into the same one-click experience as Redis.


No action needed on your part — these features are live now. Just open the terminal, file manager, or your Laravel app's settings to start using them.