# Deploy from GitHub

Source: /docs/getting-started/deploy-from-github

Connect your GitHub account, pick a repository and branch, run the readiness check, and deploy. Your app comes up on its own web address.

## Before you start [#before-you-start]

Your repository needs a `Dockerfile` in its root and a server that listens on the port the platform provides. The [what runs here](/docs/getting-started/what-runs-here) page is the full list. If it is missing something, the readiness scan tells you exactly what, and hands you a prompt to fix it.

## Steps [#steps]

### Start a new app [#start-a-new-app]

In the dashboard, open **New app**. Under **import source**, choose the **GitHub** tab.

### Connect GitHub [#connect-github]

Click **Connect GitHub** and approve the OrbitOrca GitHub App. When it returns you see **Connected as** your account.

If a repository you expect is missing, click **Add repositories** and grant the GitHub App access to it on GitHub, then come back.

### Pick the repository and branch [#pick-the-repository-and-branch]

Search for the repository, select it, then choose the **Branch** to build from. Private repositories work.

### Name it and pick a subdomain [#name-it-and-pick-a-subdomain]

Give the app a name. Optionally set a **Subdomain** — leave it blank and one is generated for you. This becomes the app's live address. See [subdomains and domains](/docs/concepts/subdomains-and-domains).

### Answer the "is this already live?" question [#answer-the-is-this-already-live-question]

Before the first deploy the platform asks whether this app is **already running somewhere, with real users or data**. For a brand-new app, answer **No, it's new**. If it is already live in production, read [database migrations](/docs/concepts/database-migrations) first — the platform does not move existing data.

### Run the readiness scan [#run-the-readiness-scan]

Open the readiness check and **Run scan**. It verifies your source can build and run. If it comes back **Ready to deploy**, continue. If it says **Action required**, see [readiness and fixes](/docs/concepts/readiness-and-fixes) — you get a fix prompt for your coding agent, or you edit the repo yourself and re-scan.

### Deploy [#deploy]

Press **DEPLOY**. The pipeline runs through building, scanning, pushing and deploying. When it finishes you see **Your app is live** with the **URL**. Open it.

## What can go wrong [#what-can-go-wrong]

* **"Connect GitHub before importing a private repository."** — You picked the GitHub tab without connecting. Click **Connect GitHub** first.
* **"GitHub installation not found. Reconnect your account."** — The GitHub App access was removed or expired. Reconnect from the GitHub tab.
* **"GitHub is temporarily unavailable. Try again shortly."** — A GitHub outage, not your repo. Retry in a few minutes.
* **"That branch is not in the repository any more. Pick one from the list."** — The branch was deleted or renamed. Choose a current branch.
* **"This subdomain is already taken." / "This subdomain is reserved."** — Pick another subdomain.
* **"Run a readiness scan before deploying"** — Deploy is disabled until a scan has run. Run it first.
* **"Fix scan findings before deploying"** — The last scan blocked. Open it, fix what it found, re-scan, deploy.

Every deploy-path error, with its fix, is on the [troubleshooting](/docs/troubleshooting) page.