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

# Run a Remix App

<img src="https://mintcdn.com/fly-io/izaS1l2UMuz6sm1H/images/remix.png?fit=max&auto=format&n=izaS1l2UMuz6sm1H&q=85&s=67b3fe455ece6b53b67f7d7f9240717c" alt="Illustration by Annie Ruygt of a color wave accross the sky" width="2048" height="882" data-path="images/remix.png" />

Getting an application running on Fly.io is essentially working out how to package it as a deployable image. Once packaged it can be deployed to the Fly.io platform.

In this guide we’ll learn how to deploy a [Remix](https://remix.run/) application on Fly.io.

We'll be using the standard web application generated by [Remix](https://remix.run/). This is a bare-bones app with no database.

## *Deploy a Remix app*

We'll assume you have NodeJS installed already and can run `npm`. We recommend
using `npm` over `yarn`, as `npm` is what Remix [references in their documentation](https://remix.run/docs/en/main/tutorials/blog).

First, [install flyctl](/flyctl/install), the Fly.io CLI, and [sign up to Fly.io](/getting-started/sign-up-sign-in#first-time-or-no-fly-account-sign-up-for-fly) if you haven't already.

Now let's generate a new Remix app. When asked where you want to deploy, pick `Fly.io`.

<CodeGroup>
  ```bash cmd theme={null}
  npx create-remix@latest
  ```

  ```output output theme={null}
  Need to install the following packages:
  create-remix@2.10.0
  Ok to proceed? (y) y

   remix   v2.10.0 💿 Let's build a better website...

     dir   Where should we create your new project?
           ./my-remix-app

        ◼  Using basic template See https://remix.run/guides/templates for more
        ✔  Template copied

     git   Initialize a new git repository?
           Yes

    deps   Install dependencies with npm?
           Yes

        ✔  Dependencies installed

        ✔  Git initialized

    done   That's it!

           Enter your project directory using cd ./my-remix-app
           Check out README.md for development and deploy instructions.

           Join the community at https://rmx.as/discord
  ...
  ```
</CodeGroup>

Now you're ready to deploy:

<CodeGroup>
  ```bash cmd theme={null}
  cd my-remix-app
  fly launch
  ```

  ```output output theme={null}
  Scanning source code
  Detected a Remix app
  Creating app in .../my-remix-app
  We're about to launch your Remix app on Fly.io. Here's what you're getting:

  Organization: Jane Developer                  (fly launch defaults to the personal org)
  Name:         my-remix-app-restless-moon-4797 (generated)
  Region:       Ashburn, Virginia (US)          (this is the fastest region for you)
  App Machines: shared-cpu-1x, 1GB RAM          (most apps need about 1GB of RAM)
  Postgres:     <none>                          (not requested)
  Redis:        <none>                          (not requested)
  Tigris:       <none>                          (not requested)

  ? Do you want to tweak these settings before proceeding? No
  Created app 'my-remix-app-restless-moon-4797' in organization 'personal'
  Admin URL: https://fly.io/apps/my-remix-app-restless-moon-4797
  Hostname: my-remix-app-restless-moon-4797.fly.dev
  installing: npm install @flydotio/dockerfile@latest --save-dev

  added 22 packages, and audited 841 packages in 2s

  258 packages are looking for funding
    run `npm fund` for details

  found 0 vulnerabilities
       create  Dockerfile
      execute  flyctl secrets set SESSION_SECRET
  Secrets are staged for the first deployment
  Wrote config file fly.toml
  Validating /Users/rubys/tmp/my-remix-app/fly.toml
  ✓ Configuration is valid
  ==> Building image

  . . .

  Visit your newly deployed app at https://my-remix-app-restless-moon-4797.fly.dev/
  ```
</CodeGroup>

That's it! Run `fly apps open` to see your deployed app in action.

Try a few other commands:

* [`fly logs`](/flyctl/cmd/fly_logs) - Tail your application logs
* [`fly status`](/flyctl/cmd/fly_status) - View your app's current deployment status
* [`fly ssh console`](/flyctl/cmd/fly_ssh_console) - Open a terminal on your VM
* [`fly deploy`](/flyctl/cmd/fly_deploy) - Deploy the application after making changes
