Deploy+
Deploy+.
From push to production.
- 01 Push
- 02 Build
- 03 Publish
- 04 Online
$
waiting for changes…
Releases
- current rollback
Every version is kept: rolling back is one click, with no downtime.
A git push
and the deployment starts on its own, without going into the panel
No downtime
the new version goes live when a link is switched
Rollback in seconds
you go back to any previous version from the history
Free of charge
included in every hosting plan
Works with your Git, wherever it is
How it works
Four steps, and you never touch them again.
Connect
Your repository, wherever it is
also on the accounts of a Multi-account plan
Five providers, one destination
over HTTPSPush
Push and the deployment starts by itself
- The usual
- Upload files by hand and keep your fingers crossed
- Here
- A push, and GitHub notifies the server
From push to deployment
signed webhookPublish
Atomic deployment, no downtime
0 s
of downtime: the new release goes live by switching a link
Atomic deployment
~/deploy/tienda/releases/
├─ 20260904-1830 · published
└─ 20260905-1012 · cloning and running script…
shared/
├─ .env → linked in every version
└─ storage/ → linked in every version
current → releases/20260904-1830
Roll back
One-click rollback, from the history
5 versions
kept by default; you decide how many
Deployment history
5 saved versionsyesterday 18:30 · e07b9d4
the version stays on the server
Assistant
It knows what project it is and prepares it.
-
PHP
Laravel
Composer, optimised caches and publishing from public.
- Web root
- public/
- Shared
- storage
- Database
- prepares it
- Assets with Node
- if you tick it
-
PHP
Symfony
Composer, prod environment and publishing from public.
- Web root
- public/
- Shared
- var/log
- Database
- prepares it
- Assets with Node
- if you tick it
-
PHP
WordPress
Database, wp-config.php and persistent uploads.
- Web root
- root
- Shared
- wp-content/uploads, wp-config.php
- Database
- prepares it
- Assets with Node
- if you tick it
-
PHP
PHP / Composer
A clean base for PHP applications with Composer.
- Web root
- root
- Shared
- —
- Database
- prepares it
- Assets with Node
- if you tick it
-
Static
Compiled frontend
Builds with Node and publishes the output of dist.
- Web root
- dist/
- Shared
- —
- Database
- not needed
- Assets with Node
- always
-
Static
Static HTML
Publishes the repository as is, without installing anything.
- Web root
- root
- Shared
- —
- Database
- not needed
- Assets with Node
- —
-
Custom
Another project
No assumptions: you decide the root, script and persistence.
- Web root
- root
- Shared
- —
- Database
- prepares it
- Assets with Node
- if you tick it
What's included
What it takes to deploy properly.
Script and Node
Your commands, on every version, with Node if needed
if a command fails, the previous one stays online
Deployment script
template · Laravelcomposer install --no-dev --prefer-dist --optimize-autoloader
npm ci && npm run build # Node installed via NVM if missing
php artisan migrate --force # optional: rollback does not undo data
php artisan config:cache && php artisan route:cache
Database
The database, created on connecting
MySQL
database, user and file in a single operation
Database · on connect
ready- Empty MySQL database mi_app
- Dedicated user with all privileges mi_app_usr
- Connection written to .env without touching anything by hand
DB_DATABASE=mi_app
DB_USERNAME=mi_app_usr
DB_PASSWORD=•••••••••••• # isn't stored in the panel
Configuration
The .env and uploads survive every version
- The usual
- Uploads and .env inside the code, at the mercy of each deploy
- Here
- Outside the code: no deploy or rollback touches them
Shared between versions
~/deploy/tienda/shared/ → releases/20260905-1012/
.enveditable
storage/from the profile
public/uploads/yours
Console
Live console and commands on what's published
6 steps
connect, clone, shared, script, activate, clean up
Run a command
over current · max. 2 min~/deploy/tienda/current
$ php artisan queue:restart
Broadcasting queue restart signal.
✓ finished in 0.4 s
Security
A token with the bare minimum, encrypted and kept out of the log
revoke it whenever you like: only the deployment stops working
Token permissions
the minimum, and encryptedEncrypted, only for cloning, never in the log.
All of this comes with every hosting plan and with the accounts in a multi-account plan, at no cost.
Read the full guide →Questions
Before connecting the first repository.
Which plans include Deploy+?
All hosting plans, at no extra cost. You will find the tool in the client area, among the options for your hosting service.
Does it work with private repositories?
Yes, with both public and private repositories. In both cases you need a GitHub access token: create a fine-grained one, limited to the repository you are going to deploy, with Contents: Read-only and Metadata: Read-only permissions. We do not need write access to your code.
Does my website go down while it is being deployed?
No. Each deployment is cloned into a new release, the shared files are linked and your scripts run before it goes live: only when everything has succeeded is the current symlink moved to the new release, and that switch is instant. If a script fails, the deployment stops and the previous release stays online.
How do I go back to the previous release if something goes wrong?
From the history, with the Rollback button on any previous deployment. It takes seconds because nothing is cloned: it only changes which release current points to. By default the last 5 releases are kept, and you can adjust how many you want to keep.
Can I run composer, npm or artisan commands?
Yes. Each repository has a script editor where you define the commands that run on each release before it goes live: composer install --no-dev, npm run build, php artisan config:cache… The system filters out dangerous commands. To use Node.js and npm, first install them from cPanel's package manager.
What happens to the .env file and upload folders?
They are not lost between deployments. The .env file is detected and preserved automatically, and you can add any paths you like (storage/app, uploads…) as shared files: they are stored separately and linked into each new release.