> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrate from Railway to Square Cloud

> Migrate from Railway to Square Cloud: map railway.json, variables and database plugins, deploy with the CLI and move to flat monthly plan pricing.

## What you get on Square Cloud

* **Predictable flat pricing in BRL**: one monthly plan price for the RAM and vCPU your applications use, independent of how much traffic they handle. See [Plans and Pricing](/en/platform/plans).
* **Dedicated resources**: RAM and vCPU are reserved for your applications.
* **Deploy in seconds**: upload a zip or push via CLI and your application is running.

## Concept mapping

| Railway | Square Cloud |
| - | - |
| `railway.json` / Nixpacks | [`squarecloud.app` configuration file](/en/getting-started/config-file) + automatic [Runtimes](/en/runtimes/introduction) |
| Usage-based billing | Flat monthly [plan pricing](/en/platform/plans) |
| Postgres/Redis plugins | [Square Cloud managed databases](/en/services/databases) (PostgreSQL, MySQL, MongoDB, Redis) |
| Environment variables | [Environment variables](/en/platform/environment-variables), set in the dashboard or uploaded from a `.env` file |
| `PORT` variable | `PORT`, set to `80` on Square Cloud, plus `HOST=0.0.0.0`: code that listens on `process.env.PORT` keeps working |
| `railway up` | `squarecloud upload` |
| Custom domains | Custom domains on the [Standard plan or higher](/en/platform/plans) |

## Migration steps

<Steps>
  <Step title="Create your configuration file">
    Replace `railway.json`/Nixpacks detection with a `squarecloud.app` file at the root of your project:

    ```systemd squarecloud.app theme={"system"}
    MAIN=index.js
    MEMORY=512
    VERSION=recommended
    DISPLAY_NAME=My migrated app
    SUBDOMAIN=my-app
    ```

    Square Cloud's [Runtimes](/en/runtimes/introduction) detect your language automatically from the extension of your `MAIN` file and check its dependency file, such as `package.json` or `requirements.txt`. A web service must listen on host `0.0.0.0` and on the port in `PORT` (`80`). See the [configuration file reference](/en/getting-started/config-file) for every field.
  </Step>

  <Step title="Set your environment variables">
    Recreate the variables from your Railway project's Variables tab, either from the dashboard's environment variables panel or by uploading a `.env` file:

    ```bash theme={"system"}
    squarecloud app env set --from-file .env --app <appID>
    ```

    Then restart the application: it reads environment variables when it starts. See [Environment variables](/en/platform/environment-variables).
  </Step>

  <Step title="Deploy">
    Upload your project via the CLI or the dashboard, in place of `railway up`:

    ```bash theme={"system"}
    squarecloud upload
    ```

    See [How to Host your Website/API](/en/tutorials/how-to-deploy-your-website) for a full walkthrough of both methods.
  </Step>

  <Step title="Migrate plugins to managed databases">
    If your project used a Railway Postgres, MySQL or Redis plugin, provision the equivalent [Square Cloud managed database](/en/services/databases) and point your app's connection string at it.
  </Step>

  <Step title="Point your DNS">
    Once the app is live at `<subdomain>.squareweb.app`, point your domain's DNS at Square Cloud and attach it from the CLI:

    ```bash theme={"system"}
    squarecloud app network domain example.com --app <appID>
    ```

    Custom domains require an active Standard plan or higher. For the DNS records, see [how to set up your own domain](https://help.squarecloud.app/en-us/article/how-to-set-up-your-own-domain-cnamedns-1fzbrgh/) in the help center.
  </Step>
</Steps>

## Key differences to plan for

* **Billing model.** There is no per-second usage meter to watch: cost is fixed per plan regardless of traffic. Size your plan by RAM/vCPU need rather than projected usage. See [Plans and Pricing](/en/platform/plans).
* **Region and latency.** Square Cloud's data center is located in New York: see the [Platform Overview](/en/platform/overview) for infrastructure details. Measure latency from your user base before cutting over if you were running in a different Railway region.
* **Databases move separately.** Migrating a Railway Postgres/Redis plugin's data means exporting it and restoring it into a new [Square Cloud managed database](/en/services/databases): plan a maintenance window for the cutover.

## Next steps

<CardGroup cols={3}>
  <Card title="Configuration file" icon="file-code" href="/en/getting-started/config-file">
    Every field of the file that replaces railway.json.
  </Card>

  <Card title="Environment variables" icon="key" href="/en/platform/environment-variables">
    Move your variables and keep secrets out of your code.
  </Card>

  <Card title="Managed database" icon="database" href="/en/tutorials/how-to-deploy-your-database">
    Create the database that replaces your Railway plugin.
  </Card>
</CardGroup>

## Contact us

If you continue facing **technical difficulties**, our **specialized support team** is available to assist you. [**Contact us**](https://squarecloud.app/en/support) and we'll be happy to help you resolve any issue: support quality is a big part of why developers rate Square Cloud [**4.9/5 across 402 reviews**](https://www.trustpilot.com/review/squarecloud.app) on Google and Trustpilot.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.