SrvYard
Sign in Start free
migrate / ploi

Bring a Ploi account over as drafts, then adopt the real servers.

Create a read-only API token in Ploi, paste it, tick the servers to read, and review a plan of servers, sites, deploy scripts, queue workers, cron jobs, databases and network rules. Ploi is never written to, and no server is changed.

Import from Ploi
# the Ploi API
token       Ploi profile, API keys
scopes      read only, tick what is listed below
checked     with one call, kept encrypted for an hour
env files   only if you ask
scripts     shown beside their translation, never run
ploi        untouched

01What you need

02How it goes

import, then scan, then adopt
  1. Import

    Open Import / migrate, choose Ploi, paste the read-only token and press Verify and continue. One read call checks it.

  2. Pick servers

    Tick the servers to read. Each site costs several calls to the other panel’s API, so a big account takes a few minutes. Reading .env files is a separate switch, off by default.

  3. Review the plan

    Totals of new drafts, updates and skipped items, then a card per server with a tick box for every site, daemon, scheduled job, database and firewall rule. Deploy scripts appear beside their translation.

  4. Create the drafts

    Tick that you read the deploy scripts, choose whether to delete the token (recommended) and press Create drafts. Nothing is installed.

  5. Connect, scan, adopt

    Connect the real server, scan it, and adopt what the scan found. Deploy once from SrvYard, check domains and certificates, and only then change DNS.

03The import screen

from the demo organisation
The Import from another panel page with Ploi selected, the token field and the cards what the token needs and what happens to your data
fig 1Choose the panel and paste a read-only token. The card on the right says what the token needs and what happens to your data.

04What the import reads and what it creates

all of it read-only
Read from PloiBecomes in SrvYard
Servers Custom servers that await access
Sites, domains, repository, status Sites marked Needs provisioning; a site Ploi reports in an odd state carries a warning
Deploy script of each site A draft script, translated, with a verdict per line
Daemons and each site’s queue workers Daemons
Cron jobs Scheduled jobs
Databases Database records (names only)
Network rules Firewall rules
SSH keys, certificates, redirects Names, metadata and redirects for the review
Scripts Recipes
The .env of each site, if you asked Key names, and values only if you tick them per site

Drafts, not machines

Servers become custom servers awaiting access, sites say Needs provisioning, and daemons, scheduled jobs, databases and firewall rules are records that are applied once the server is connected. Every item is tagged with the panel’s name. Nothing touches a machine and nothing is written to Ploi.

Deploy scripts

Each line is shown with a verdict: unchanged, translated (a variable renamed, or a step SrvYard does itself removed), review (an old absolute path, a variable SrvYard does not have) or unsupported (commented out: anything that needs sudo, or restarts Supervisor). The script is never run by the import; it runs only at a deployment you start.

05What is never copied

because the API will not give it to you
  • Database passwords and database users: Ploi lists databases only.
  • SSH private keys, storage provider secrets and Git tokens.
  • Passwords of authentication users.

Environment files are read only if you switch it on, and imported only for the sites you tick; without that, key names alone can be shown. The token and everything read with it are encrypted, expire after an hour and are deleted when you finish or cancel. Delete the token in Ploi too.

How your data is handled during an import is also spelled out on the security page.

06Then scan and adopt the real server

the half that reads the machine

Ploi’s documentation describes zero-downtime sites as a <domain>-deploy folder of timestamped releases, with the site directory linked to the current one. The scan looks for that layout and for the ploi user; for each site the report says whether it can be adopted without moving files.

The scan is read-only. You choose what it may read, and every consent lists its exact commands. Private keys, database passwords and password hashes are never read. Adopting registers each site where it already is, in observe mode: SrvYard writes nothing to the web server, keeps a restore point, and can roll back.

The Ploi import was written from Ploi’s published API documentation. If your token cannot reach an endpoint, or Ploi has no such record, that part is skipped with a warning under Things to know before you apply, and the rest still imports.

The Scan a server page: choose a server and the list of what the scan may read, each with its exact commands
fig 2Scan a server. Anything you leave unticked is not read.

07Switching the old panel off

a guide, never run for you

Ploi connects over SSH with its own keys and leaves cron lines (certificate renewals, Composer updates, monitoring collectors), sudo rules and helper files. The guide has you remove its keys, look through cron and units, check /etc/sudoers.d and delete the server in Ploi, choosing not to delete it at the provider. Keep the ploi user while sites and daemons run as it.

SrvYard shows a detach guide per panel after adoption. Every command in it is for you to read and run; SrvYard never executes it. Keep the old panel running a few days as a safety net, then cancel it.

Adoption in depth: Adopt a site that is already on your server.

08Questions

answers from the docs
Which Ploi scopes should I tick?

Read scopes only: servers, sites, databases, cronjobs, daemons, network rules, SSH keys, certificates, redirects, queues and scripts, plus the environment scope if you want .env files. See Migrate from Laravel Forge, Ploi or VitoDeploy.

Are database users imported from Ploi?

No. Ploi lists databases only, so SrvYard imports database names without users or passwords.

Import one Ploi site. Keep Ploi running until it works.

Free: 1 server, 3 sites, 100 deploys a month. Read the docs first if you prefer.