SrvYard
Sign in Start free
migrate / forge

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

A read-only Forge API token is enough. SrvYard lists your organisations’ servers, reads the ones you tick, and shows a plan: sites, deploy scripts, daemons, scheduled jobs, databases and firewall rules. Forge itself is never written to, and no server is changed.

Import from Laravel Forge
# the Forge API of your organisations
token       forge.laravel.com/profile/api
abilities   read only; .env needs site:manage-environment
checked     with one call, kept encrypted for an hour
servers     organisation / server, you tick which
env files   only if you ask
scripts     shown beside their translation, never run
forge       untouched

01What you need

02How it goes

import, then scan, then adopt
  1. Import

    Open Import / migrate, choose Laravel Forge, 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 Laravel Forge 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 Laravel ForgeBecomes in SrvYard
Servers of each organisation you can see A custom server that awaits access, named and addressed like the Forge one
Sites, their domains and repository A site marked Needs provisioning, with its domains and redirects
Deploy script of each site A draft script, translated, with a verdict per line
Background processes Daemons
Scheduled jobs Scheduled jobs
Databases and database users Database records (no passwords)
Firewall rules Firewall rules, applied only when you apply them to a connected server
SSH key names Names only
Nginx templates and organisation recipes Nginx templates and recipes
Basic-auth rules, certificates, the site Nginx configuration Read as metadata or text for the review; certificates are not copied
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 Laravel Forge.

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, SSH private keys, storage provider secrets and Git tokens. No Forge API returns them.
  • The public key text of server SSH keys: Forge lists names only.
  • Passwords of HTTP basic-auth rules.

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 Laravel Forge 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

Forge leaves recognisable marks: a forge user, an Nginx forge-conf include folder and a releases, current and shared layout. The scan recognises the panel and the layout, so the report can adopt a Forge site 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.

Sites deployed through Envoyer may show an empty deploy script, and the review says so. A part the token cannot read (for example without the environment ability) is skipped with a warning under Things to know before you apply.

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

Forge has no agent on the server. It reaches the machine over SSH with its own keys, so the guide has you remove those keys, then the sudo rules, and decide about Forge’s housekeeping cron lines.

Things the guide flags: Forge renews the certificates it issued, so issue a SrvYard certificate for any site whose certificate nothing else renews; deploy webhooks at GitHub, GitLab or Bitbucket still point at Forge; and do not change the database passwords Forge knows while Forge is still attached. Keep the forge Linux user (the sites run as it) and Nginx as it is.

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
What does the Forge token need?

Only read access to servers and sites, from forge.laravel.com/profile/api. To also read .env files it needs the site:manage-environment ability. See Migrate from Laravel Forge, Ploi or VitoDeploy.

Does the import change anything in Forge or on my servers?

No. It only reads, and creates drafts in SrvYard: servers wait for access and sites say Needs provisioning. Delete the token in Forge when you finish.

What can SrvYard not copy from Forge?

Database passwords, SSH private keys, storage provider secrets and Git tokens, because no API returns them, plus the public key text of server SSH keys and basic-auth passwords.

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

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