# Migrate from RunCloud to fortrabbit

Source: https://www.fortrabbit.com/migrate/from-runcloud
Published: 2026-10-31
Updated: 2026-10-31


## Migrate from RunCloud with a coding agent

Claude Code, Codex, Cursor and other coding agents can run this migration. Paste this prompt into the agent, in the project folder:



```txt
Read https://www.fortrabbit.com/agents.md and set up fortrabbit. Then move this site from RunCloud to fortrabbit, following https://www.fortrabbit.com/raw/migrate/from-runcloud.md
```

Sign-in happens in the browser, see [agent setup](/agents). The agent needs SSH access to the RunCloud server to read the settings, dump the database and copy the uploads. The steps below are what the agent follows, and what to do by hand without one. The agent changes nothing on the old host: a person deletes the old setup once the site runs on fortrabbit.

## RunCloud settings and where they go

| On RunCloud | On fortrabbit |
| -- | -- |
| `/home/<user>/webapps/<app>` | Git repository, deployed by the [GitHub integration](https://docs.fortrabbit.com/platform/deployment/github-app) |
| `.env` editor of the web app | [Environment variables](https://docs.fortrabbit.com/platform/settings/env-vars) |
| Git deployment script | [Build commands](https://docs.fortrabbit.com/platform/deployment/build-commands) and [post-deploy commands](https://docs.fortrabbit.com/platform/deployment/post-deploy-commands) |
| Cron Jobs | [Cron jobs](https://docs.fortrabbit.com/platform/jobs/crons) |
| Supervisor jobs | [Workers](https://docs.fortrabbit.com/platform/jobs/workers) |
| MySQL on the server | MySQL component |
| Uploads in the web app directory | Storage component, files copied with rsync |

## 1. Create the app

Create an app in the dashboard with the software template matching the framework. Its default domain works with HTTPS right away, so the whole move can be tested before DNS changes. Lower the TTL of the domain's DNS records now, see [migrate to fortrabbit](https://docs.fortrabbit.com/dev/how-to/migrate-to-fortrabbit).

## 2. Copy the settings off RunCloud

Log in over SSH as the system user that owns the web app, such as `runcloud`.

- Open the `.env` in the RunCloud dashboard or in the web app directory. Copy every value except `DB_*`, `APP_URL`, `REDIS_*`, `QUEUE_CONNECTION`, `CACHE_STORE` (or `CACHE_DRIVER`) and `SESSION_DRIVER` into the environment variables of the fortrabbit environment.
- Open the deployment script of the Git deployment. `composer install` and `npm run build` go into the build commands, migrations and cache commands into the post-deploy commands.
- Open Cron Jobs. Each entry becomes one cron job.
- Open the Supervisor jobs. Each queue worker becomes a worker.

fortrabbit has no Redis. A Laravel app sets the queue, cache and session drivers to `database` or `file`, see [Laravel queues and scheduler](https://docs.fortrabbit.com/guides/laravel/queues-scheduler).

## 3. Deploy the code

Connect the GitHub repository RunCloud deploys from to the environment and push. The first deployment runs the build commands.

## 4. Move the database

Dump the database over SSH with the credentials from the `.env`:



```shell
mysqldump -u <user> -p <database> > dump.sql
```

Import the dump into the MySQL component as described under [MySQL export and import](https://docs.fortrabbit.com/platform/mysql/export-import).

## 5. Copy the uploads

Find the upload folder in the web app directory, such as `storage/app/public` for Laravel or `wp-content/uploads` for WordPress. Pull it to the local machine with rsync, then push it to the environment, see [rsync](https://docs.fortrabbit.com/dev/how-to/rsync).

## 6. Switch the DNS

Test the app on its default domain, add the custom domain to the environment and point the records at the domain provider to fortrabbit, see [external domain setup](https://docs.fortrabbit.com/platform/domains/external-domain-setup). RunCloud hosts no DNS: its DNS Manager edits records in a connected Cloudflare account, so change them there.

## What stays on the RunCloud server

- Custom Nginx config in `/etc/nginx-rc/extra.d/`. fortrabbit runs Apache, so rewrites move into [.htaccess](https://docs.fortrabbit.com/dev/htaccess/redirects).
- Root-level software, system packages and daemons outside the app. fortrabbit has no root shell, see [limits](https://docs.fortrabbit.com/platform/concepts/limits).

Once the site runs on fortrabbit, delete the web app in RunCloud. Delete the server at the cloud provider when no other web app runs on it.

---

- [Migrate to fortrabbit](/dev/how-to/migrate-to-fortrabbit)
- [RunCloud alternative](/alternatives/runcloud)
