---
title: Migrating from Railway
description: Move a Railway service to Atlasflow.
order: 0
---

Railway and Atlasflow are a close match: both deploy from GitHub and both can build your app automatically. Atlasflow uses [Railpack](/docs/guides/supported-frameworks.md), the same open-source build tool Railway created, so auto-detected builds should feel familiar.

## What maps over directly

| Railway                      | Atlasflow                                                                   |
| ---------------------------- | --------------------------------------------------------------------------- |
| Deploy from GitHub           | [Connect a GitHub repo](/docs/getting-started.md)                              |
| Nixpacks/Railpack auto-build | [Automatic builds](/docs/guides/supported-frameworks.md) (Railpack)            |
| Service variables            | [Environment variables](/docs/guides/environment-variables.md) (build/runtime) |
| Custom domains               | [Custom domains](/docs/networking/custom-domains.md)                           |
| Usage-based billing          | [Usage and credits](/docs/billing/usage-and-credits.md)                        |

## Steps

1. **Create a project** from your GitHub repository. If you don't have a Dockerfile, Atlasflow auto-detects your stack.
2. **Set the port to 3000.** Railway injects a dynamic `PORT`; Atlasflow expects your app on **port 3000**. Bind to `0.0.0.0`. See [Container requirements](/docs/guides/container-requirements.md).
3. **Recreate your variables.** Copy Railway service variables into Atlasflow as [runtime variables](/docs/guides/environment-variables.md) (and build variables where needed). Replace any Railway-provided references (like a managed database URL) with your own connection string.
4. **Deploy and test** against the preview URL.
5. **Move your domain** to Atlasflow and verify DNS. See [DNS configuration](/docs/networking/dns-configuration.md).

## Things to know

- Atlasflow deploys one container per project. To deploy multiple services from one repo, create [multiple projects](/docs/guides/monorepos.md).
- Managed Postgres, object storage, and queues are [coming soon](/docs/products.md). Until then, bring your own database and point a runtime variable at it.

## Next steps

- [Supported frameworks](/docs/guides/supported-frameworks.md): how auto-detection works.
- [Environment variables](/docs/guides/environment-variables.md): set runtime config.
- [Custom domains](/docs/networking/custom-domains.md): cut over your domain.