Run a Remix App

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 application on Fly.io.

We’ll be using the standard web application generated by Remix. 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.

First, install flyctl, the Fly.io CLI, and sign up to Fly.io if you haven’t already.

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

npx create-remix@latest
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
...

Now you’re ready to deploy:

cd my-remix-app
fly launch
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/

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

Try a few other commands: