Ploi can take over a server that Laravel Forge provisioned. It connects over SSH, scans what is there and registers it in the panel. You keep the server, the IP address and the files, and your sites stay online while it runs. On a small server this takes about two minutes. The import is in beta, so make a snapshot at your provider before your first one.

Before you start
You need root access over SSH. As the forge user,
sudo -igets you there.The server runs Ubuntu 22.04, 24.04 or 26.04, or Debian 12 or 13, and is not managed by Ploi yet.
Leave the server connected in Forge until the import is done. Disconnecting is an optional last step.
Step by step
In Ploi, open Servers, click Create server and pick Import server.
Choose Laravel Forge and fill in a name, the IP address and the SSH port.
Run the command Ploi shows you as root on the server. It only adds Ploi's SSH key to
/root/.ssh/authorized_keys.Click Verify connection & scan. The scan is read-only and takes under a minute.
Review what was found, tick the sites you want and choose whether to disconnect from Forge at the end.
Start the import and follow the progress on the building page.
What Ploi changes
Ploi adds a ploi user, installs certbot (Forge does not install it) and supervisor if it is missing, and adds its own renewal and composer cronjobs. The webserver, PHP, the database server, the firewall and sshd are left as they are.
The forge user and isolated site users become Ploi system users. Ploi appends its key to their
authorized_keys, nothing else changes about them.Sites keep their directory, user and PHP version. Their NGINX configuration is regenerated from Ploi's template after an
nginx -tcheck, so certificates, redirects and the other NGINX features in Ploi work. The Forge configuration stays in the site's NGINX history and in/root/ploi-import-backup. NGINX runs as the ploi user afterwards and sites of the forge user get their own PHP-FPM pool.Certificates, databases, database users, supervisor daemons, cron entries, ufw rules and git remotes are registered. Daemons restart once, cron entries move to Ploi's scheduler so nothing runs twice.
Database users have no password in Ploi, because MySQL only stores hashes. Use reset password when you need one and update the application's
.env.
Certificates
Forge stops renewing Let's Encrypt certificates once the server leaves Forge. The ones it already issued keep working until they expire. Before that date, request a new Let's Encrypt certificate from the site's SSL tab in Ploi. Ploi renews it from then on.
Deployments
Git remotes are linked as custom repositories on the branch the checkout is on, so git pull works with the deploy key that is already on the server. Connect your GitHub, GitLab or Bitbucket account on the site for commit details and push to deploy through your provider. Sites with Forge's zero downtime layout (releases plus a current symlink) are marked in the site log. Enable zero downtime deployments in Ploi on those sites before you deploy.
Disconnecting from Forge
With the disconnect option on, the last step removes Forge's SSH key from root and the site users, its certificate renewal scripts and its cleanup cronjob. The sudoers rules that let the forge user reload PHP-FPM, NGINX and supervisor stay, deploy scripts may use them. With the option off, Forge keeps its access until you archive the server there. Cancel your Forge subscription only after the import has finished.
If something goes wrong
Every step writes to the server logs. A site whose new NGINX configuration fails nginx -t keeps its Forge configuration and is marked in its site log, the rest continues. If the import stops, the server shows as failed. Send us the server ID through support or get in touch over Discord. Migrations are a managed feature, and we monitor them closely so we're able to help you quickly.