By Sam Ruby

Multiple Logs for Resiliency

You’ve done everything right. You are well aware of Murphy’s Law. You have multiple redundant machines. You’ve set up a regular back up schedule for your database, perhaps even are using LiteFS CLoud. You ship your logs to LogTail or perhaps some o

Read more

Read more
By Ben Toews

Tokenized Tokens

We built some little security thingies. We’re open sourcing them, and hoping you like them as much as we do. In a nutshell: it’s a proxy that injects secrets into arbitrary 3rd-party API calls. We could describe it more completely here, but that woul

Read more

Read more
By Sam Ruby

Fly.io ❤️ Bun

Bun 1.0 comes out September 7th. Fly.io is making preparations. Previously, we stated that Fly.io ❤️ JS, and we understandably started with Node.js. While that work is ongoing, it makes sense to start expanding to other runtimes. Bun is the obvio

Read more

Read more
By Darla Magdalene Shockley & Ben Johnson

LiteFS Cloud: Distributed SQLite with Managed Backups

We love SQLite in production, and we’re all about running apps close to users. That’s why we created LiteFS: an open source distributed SQLite database that lives on the same filesystem as your application, and replicates data to all the nodes in you

Read more

Read more
By Kurt Mackey

We Raised A Bunch Of Money

This past July, we raised $25MM from A16Z and our existing investors, including Intel Capital and Dell. Recently, we raised an additional $70MM led by EQT Ventures. Why do startups write announcements like these? We went back and forth on it. There a

Read more

Read more
By Darla Magdalene Shockley

Python Async Workers on Fly Machines

Last year, while working in what was my day job at the time (before I joined Fly.io!), we had just developed a new internal tool to help an adjacent team with their work. This adjacent team wrote technical content, and they had a lot of issues stemmi

Read more

Read more
By Sam Ruby

Vanilla with Candy Sprinkles

Recapping where we are to date: There are plenty of JavaScript frameworks to choose from, and fly.io loves them all. Pretty much all of the big name frameworks are delightfully weird. Picking up where we left off, this blog post will describe lite

Read more

Read more
By Chris Fidao

Playing Traffic Cop with Fly-Replay

The Fly Replay header is deceptively simple. All your app has to do is respond with a header, and the HTTP request gets re-ran somewhere else. It’s behind-the-scenes of some pretty interesting apps on Fly.io (we wrote about using it with Globally Di

Read more

Read more
By Sam Ruby

The JavaScript Ecosystem is Delightfully Weird

Note, I’m not saying that JavaScript is weird, though it definitely is weird. But that’s not the point of this blog post. Bear with me, instead of starting with how JavaScript ecosystem is weird, I’m going to start with why the JavaScript ecosystem

Read more

Read more
By Kátia Nakamura

Deploying LangChain to Fly.io

I hear about Large Language Models (LLM) everywhere these days! Do you? 🤔 LLMs are a type of natural language processing (NLP) technology that uses advanced deep learning techniques to generate human-like language. If you haven’t heard about LLMs, y

Read more

Read more
By Sam Ruby

Fly.io ❤️ JS

Fly.io is a great place to run fullstack applications. For most programming languages, there is a defacto default fullstack framework. For Ruby, there is Rails. For Elixir, there is Phoenix. For PHP there is Laravel. For Python, there is Django.

Read more

Read more
By Ben Johnson

Gossip Glomers

In the field of computer science, the industry is represented by two separate yet equally important groups: the software developers who build Rails applications and mobile games, and the academics who write theory papers about why the problems those

Read more

Read more
By Chris Fidao

Shipping Logs

Nearly all of our apps are puking output. Sometimes, it’s intentional. Often this output is in the form of structured logs. Logs are helpful for a variety of use cases - debugging, tracking, collating, correlating, coalescing, and condensing the ha

Read more

Read more
By Thomas Ptacek

Carving The Scheduler Out Of Our Orchestrator

So, you want to build an app to rate sandwiches. Well, the world has a lot of different sandwiches. Pit beefs in Baltimore, Tonkatsu sandos in Shinjuku, and Cemitas in Puebla. You want real-time sandwich telemetry, no matter the longitude of the sand

Read more

Read more
By Chris Nicoll

Fly.io is in Johannesburg

Did you know that we’re in Johannesburg? There’s rugby and cricket. Hearty kota and Gatsby sandwiches. Braii under sunny skies and low-latency full-stack apps. Front end, Postgres, Redis, the works: if your users support the Springboks and Banyana Ba

Read more

Read more
By Ben Johnson

WAL Mode in LiteFS

By and large, SQLite is configuration-free. You can get pretty far by just using the default settings. As your application grows and you start tweaking settings, one of the first knobs you’ll come across is the journal mode. This setting determines h

Read more

Read more
By Joshua Sierles

Launching Redis by Upstash

We love databases that scale globally. As an ambivalent database provider, we built a global, automated Postgres, and we tinkered with global Redis on scrappy startup weekends. But the Fly.io forecast called for integration over invention. So we part

Read more

Read more
By Brad Gessler

Logbook: November 14 to December 5, 2022

Build real-time applications on any backend with Replicache and Fly, run Cron on Fly, two LiveWire how-tos, and learn how Fly reluctantly built its Postgres database service. Ok, it’s been longer than a week since the last update because a lot of us

Read more

Read more
By Chris Nicoll & Shaun Davis

How We Built Fly Postgres

Fly.io is an ambivalent database provider—one might even use the word “reluctant”. The reasons for that are interesting, as is the way Fly Postgres works. When we relate this in conversations online, people are often surprised. So we thought we’d tak

Read more

Read more
By Dov Alperin

Real-Time Collaboration with Replicache and Fly-Replay

Imagine this: you have invented the best design tool since Figma. But before you can compete with the design-industry heavyweight, you need to be able to compete on one of Figma’s main propositions: real-time collaboration. You do some research and f

Read more

Read more
By Brad Gessler

Logbook: November 7 to November 14, 2022

Automatically deploy Elixir apps to production with Github Actions CI and troubleshoot performance issues with OpenTelemetry. Help the Python community draft Django docs. Deploy S3-compatible object storage close to your Fly apps. Last week we got im

Read more

Read more
By Brad Gessler

Logbook: October 29 to November 6, 2022

This week Redis gets some power-ups, Elixir confesses its love for React, Fly gets real about Postgres, Livewire gifts us with a few tutorials, and a many of us in North America didn’t have to change the clocks around our house because we convinced ou

Read more

Read more
By Chris McCord

A love letter to React

It’s hard to overstate the impact React has had since its release in 2013. For me, React came with a few revelations. First was a reactive HTML-aware component model for building UIs. Second was colocated markup directly in the app code. Third, it fo

Read more

Read more
By Brad Gessler

Logbook: October 21 to 28, 2022

Postgres docs improvements First up, some new documentation was created to run people through how to fail over a Postgres database. Performing a Failover Performing a Regional Failover “Getting Started” was updated to show how to setup a Postgres

Read more

Read more
By Ben Johnson

Introducing LiteFS

Full-stack developers are sleeping on SQLite, a database most devs think more suited to unit tests than production loads. That’s true enough for some apps. Most web apps are read-heavy, though, and we can use that to our advantage. With the right too

Read more

Read more
By Dov Alperin

Scale-to-Zero Minecraft server with Terraform and Fly Machines

Running a Minecraft server for friends has become an archetypal first foray into the workings of the Internet. For some it’s learning to expose the tender underbelly of a home network to outside connections. For others it’s exploring the world of VMs

Read more

Read more
By Ben Johnson

How the SQLite Virtual Machine Works

SQL is a weird concept. You write your application in one language, say JavaScript, and then send commands in a completely different language, called SQL, to the database. The database then compiles and optimizes that SQL command, runs it, and return

Read more

Read more
By Ben Johnson

How SQLite Scales Read Concurrency

If you scour Hacker News & Reddit for advice about databases, some common words of caution are that SQLite doesn’t scale or that it is a single-user database and it’s not appropriate for your web-scale application. Like any folklore, it has some his

Read more

Read more
By Lubien & Chris Nicoll

Building an In-Browser IDE the Hard Way

“Remote development environment!” Whether you reacted with a thrill of enthusiasm, a surge of derision or a waft of indifference, we’re not really here to change your mind. That phrase means a lot of different things at this point in history. The m

Read more

Read more
By Ben Johnson

How SQLite helps you do ACID

When database vendors recite their long list of features, they never enumerate “doesn’t lose your data” as one of those features. It’s just assumed. That’s what a database is supposed to do. However, in reality, the best database vendors tell you exa

Read more

Read more
By Chris Nicoll

Volume Expansion and Snapshot Restores

Fly Volumes are the persistent storage that makes it possible to run full stack apps entirely on the Fly.io platform, keeping your configuration, session or user data in place across deployments. Looking at them from another angle, volumes are space

Read more

Read more
By Ben Johnson

SQLite Internals: Pages & B-trees

Ok, I’ll admit it—I’m a SQLite shill. There are few holes that I don’t try to put a SQLite-shaped peg into. It’s not that I dislike other databases, they’re great. But SQLite is so easy to use and, more importantly, it’s simple. Simplicity leads to r

Read more

Read more
By Chris Fidao

Launching Laravel Bytes

Today we’re launching Laravel Bytes - our new home for anything Laravel. We’re excited to support deploying Laravel across the globe - and we have lots to talk about! We’ve already made it easy to run Laravel on Fly, but with the possibilities unlo

Read more

Read more
By Chris McCord

How LiveView Took on a Life of Its Own

LiveView started with a simple itch. I wanted to write dynamic server-rendered applications without writing JavaScript. Think realtime validations on forms, or updating the quantity in a shopping cart. The server would do the work, with the client re

Read more

Read more
By The Fly.io Balloon

Logbook - 2022-07-18

We have some real gems in this edition. Have you ever wished you could grow the storage volume on a Fly.io app? Now you can!! What about this one: Ever wished that the $99 Pro Plan would include $99 of usage credits? OK, that one may have been a li

Read more

Read more
By Thomas Ptacek

SOC2: The Screenshots Will Continue Until Security Improves

If you’re off getting your app up and running on Fly.io and finding your checkbook, great! I won’t get in your way. The rest of you, though, I want to talk to you about what SOC2 is and how it works. Spoiler: the SOC2 Starting Seven post held up pret

Read more

Read more
By Will Jordan

The Serverless Server

Fly.io isn’t a “Gartner Magic Quadrant” kind of company. We use terms like “FaaS” and “PaaS” and “serverless”, but mostly to dunk on them. It’s just not how we think about things. But the rest of the world absolutely does think this way, and I want t

Read more

Read more
By The Fly.io Balloon

Logbook - 2022-06-23

We’ve had a lot of changelogs about our Phoenix/LiveView-based web UI in recent weeks. It’s pretty rad; we’ve been vocal about being CLI-first, but we love a first-class dashboard. Our dashboard has sprouted a lot of new capabilities, and at this poi

Read more

Read more
By Amos Wenger

How to make Rust leak memory (also: how to make it stop)

We have a Rust-based proxy. It was leaking memory. We fixed it, and we’ll talk about that, but to be really thorough, we’ll look at how loading a web page works. Starting with hardware interrupts. The downside of Thomas writing job postings is that t

Read more

Read more
By The Fly.io Balloon

Logbook - 2022-06-10

Here’s our latest changelog. This week we’re putting the in-browser UI updates a little closer to all the other ones, to see if they’ll play nicely together. [Feature] Our WireGuard peers sync a lot faster with the kernel’s wg state, by adding only

Read more

Read more
By The Fly.io Balloon

Logbook - 2022-06-01

Here’s our latest changelog. Looking back over the week, our forum community has been quite a driver of (logged) change. When you’re done here, head over there to be a part of it! [Feature] Created an example Node.js app to demonstrate how to expo

Read more

Read more
By The Fly.io Balloon

Logbook - 2022-05-26

Work leading up to the Fly Machines launch involved a multitude of changes by many of the cogs in this corporate machine, but that’s not to say the other production lines have been idle. For one thing, our web UI has been transforming before our eyes

Read more

Read more
By Kurt Mackey

Fly Machines: an API for fast-booting VMs

Fly Machines are VMs with a fast REST API that can boot instances in about 300ms. Our proxy can boot Fly Machines for you, and you can shut them down when they’re idle. Which means you can cost-effectively create VMs and keep them standing by to ha

Read more

Read more
By The Fly.io Balloon

Logbook - 2022-05-13

[Feature] Provisioned new servers in syd, iad, and dfw which were very full. Added capacity should mean customers should no longer get provisioning issues when trying to deploy to these regions. [Feature] The account deactivation page now asks users

Read more

Read more
By Ben Johnson

I'm All-In on Server-Side SQLite

The conventional wisdom of full-stack applications is the n-tier architecture, which is now so common that it’s easy to forget it even has a name. It’s what you’re doing when you run an “application server” like Rails, Django, or Remix alongside a “d

Read more

Read more
By Chris Nicoll

Logbook - 2022-05-05

Features and fixes are flying like dodgeballs in a school gym, and the Fly.io Changelog Enforcer could probably have done a better job patrolling—but let’s have a look at our haul of updates since our first Logbook post. There’s a fair amount of pr

Read more

Read more
By Nolan Darilek

Accessibility and Real-time Apps: Clearing Fog and Picking Fruit

Hey, everyone. Last time we talked a bit about what accessibility is, why it’s important, and how you can incorporate it into your process. Today, using the time-travel superpowers of Git, I’ll take you along as I start making LiveBeats more accessib

Read more

Read more
By Chris Nicoll

Logbook - 2022-04-20

Here’s a changelog covering our most recent activity (i.e. since we started compiling updates, a bit under two weeks ago): [Feature] Added extra capacity in IAD. [Feature] Backup regions (by far our most confusing misfeature) are now disabled by de

Read more

Read more
By Thomas Ptacek

A Foolish Consistency: Consul at Fly.io

We set the scene, as usual, with sandwiches. Dig if you will the picture: a global Sandwich Bracket application, ascertaining once and for all the greatest sandwich on the planet. Fly.io wants our app, sandwich-bracket, deployed close to users aroun

Read more

Read more
By Nolan Darilek

Accessibility for real-time web apps

Like every developer, I rely on a number of products and services to manage and promote my many side projects. But I’ve had more than one neat idea go down in flames because I simply couldn’t use the amazing, must-have service that would have made

Read more

Read more
By Thomas Ptacek

Our User-Mode WireGuard Year

WireGuard is fundamental to how Fly.io works. Along with Firecracker and Rust, it’s one of the three “interesting” technical choices we’ve made. Practically everything that talks to anything else at Fly.io does so over WireGuard. That goes for use

Read more

Read more
By Lubien & Chris Nicoll

Turbocharge your Heroku Apps with New Turboku

In early 2020, before we launched our VM platform, we made a little landing page called Turboku. It was a one-click launcher to deploy a Heroku app on Fly.io. It let people try us out without spending time porting an app. Many of our first customers

Read more

Read more
By Chris McCord

LiveBeats: Building a social music app with Phoenix LiveView

We decided that 2022 was a good year to ship a full-stack Phoenix reference app. The “full stack” metaphor has progressed beyond its humble beginnings of some REST endpoints and sprinkles of JS and CSS. Showing off a todo app is also no longer state

Read more

Read more
By Kurt Mackey & Chris Nicoll

Free Postgres Databases

We like building side projects and also hate paying for hosting for side projects. We also know that y'all like free stuff. And we think that when you use free stuff for side projects, there’s a pretty good chance you’ll pay for similar stuff for rea

Read more

Read more
By Lubien

Self-service account deactivation: why it’s harder than you would think

We’ve just introduced a self-service UI for deleting your Fly.io account. From time to time people ask us to deactivate their account. It happens! Maybe you just tried a walkthrough out of interest, or you created a new account with a different name

Read more

Read more
By Mark Ericksen

Launching Livebook using LiveView

The Livebook launcher was super fun to create. Everything happens in a single LiveView process. There was a problem though… it wasn’t great if we were in the middle of deploying the app for the user and one these things happened: User hits “refresh

Read more

Read more
By Chris McCord

How Safari Ruined My Tuesday

Safari 15 shipped in September 2021 and included an obscure CSS bug that broke most LiveView applications. The LiveView client operates in two modes – connected, when it can talk to the server over websockets, and disconnected when offline. When Live

Read more

Read more
By Kurt Mackey

32 Bit Real Estate

Two obvious costs of running Internet apps for users on your own hardware: hardware and bandwidth. We buy big servers and run them in racks at network providers that charge us to route large volumes of traffic using BGP4 Anycast. You probably have at

Read more

Read more
By Chris McCord

How We Got to LiveView

LiveView strips away layers of abstraction, because it solves both the client and server in a single abstraction. HTTP almost entirely falls away. No more REST. No more JSON. No GraphQL APIs, controllers, serializers, or resolvers. You just write HTM

Read more

Read more
By Michael Dwan

Fly.io Is Hiring Full-Stack Developers

We’re working on super fun problems and are looking for more people to join us. In particular: we’re looking for full-stack developers. We expect this will be a good role for early-to-mid-level career developers. Some Background Fly.io’s users intera

Read more

Read more
By Thomas Ptacek

API Tokens: A Tedious Survey

This is not really a post about Fly.io, though I’ll talk about us a little up front to set the scene. The last several weeks of my life have been about API security. I’m working on a new permissions system for Fly.io, and did a bunch of researc

Read more

Read more
By Mark Ericksen

Better Business Intelligence in Elixir with Livebook

As a developer, has your manager ever come and asked a question like, “How much money are we making?” If you were a line-of-business developer at a global insurance company, you’d reach for your handy, nosebleed-expensive Business Intelligence (BI) s

Read more

Read more
By Mark Ericksen

FYI: Phoenix drops webpack and npm for esbuild

The Phoenix Framework is the go-to web framework for Elixir developers. A recent PR was merged that replaces the use of node, npm, and webpack with esbuild. For those new to esbuild, it is written in Go so it compiles to native code and runs really f

Read more

Read more
By Kurt Mackey

Last Mile Redis

100 milliseconds is the magic number. For a backend application, a sub-100ms response time is effectively instantaneous, and people love using “instant” apps. Since we’re all dirty capitalists, we’d add: if people love your app, you’ll make more mone

Read more

Read more
By Mark Ericksen

FYI: Livebook 0.2 with Kino

Livebook 0.2 was released. The big news here was the announcement of “Kino” (meaning “cinema”). It’s a client-side focused feature that animates data changes. José Valim created a video demonstrating some of the new Livebook features. Use this link to

Read more

Read more
By Kurt Mackey & Kurt Mackey

Globally Distributed Postgres

This is a story about a cool hack we came up with at Fly. The hack lets you do something pretty ambitious with full-stack applications. What makes it cool is that it’s easy to get your head around, and involves just a couple moving parts, assembled i

Read more

Read more
By Alexander Koutmos

Monitoring Elixir Apps on Fly.io With Prometheus and PromEx

Fly.io takes Docker containers and converts them into fleets of Firecracker micro-vms running in racks around the world. If you have a working Docker container, you can run it close to your users, whether they’re in Singapore or Amsterdam, with just

Read more

Read more
By Mark Ericksen

Livebook for Server Admin Tasks

TODO: keep it simple. Just show how to connect it manually and do a data analysis chart like question word length? Livebook started out as Elixir’s version of Jupyter Notebooks but has quickly gone beyond that. Now, Livebook is a very capable and pow

Read more

Read more
By Mark Ericksen

Observing Elixir in Production

Elixir, Erlang, and really just the BEAM has a feature called “Observer”. It’s fun showing it to people new to Elixir because it’s just so cool! It’s a WxWidgets graphical interface that connects in realtime to a running Erlang node and lets you “obs

Read more

Read more
By Mark Ericksen

Livebook is a secret weapon for documentation

Every application has that core, most important thing that it does. It is the reason the application exists. It’s that central idea that everything else is there to support. A major hurdle for new developers joining a project can be understanding an

Read more

Read more
By Thomas Ptacek

Hooking Up Fly Metrics

We’ve written a bit, for a general audience, about how Fly collects and manages metrics. If you’re just sort of generally interested in metrics and observability, go read that first. Meanwhile, if you’re a Fly user, or considering becoming such a us

Read more

Read more
By Thomas Ptacek

Fly's Prometheus Metrics

We should talk a bit about metrics and measurement and stuff, because they’re how we all know what’s going on. There’s two reasons we’ve written this post. The first is just that we think this stuff is interesting, and that the world can always use

Read more

Read more
By Mark Ericksen

Building a Distributed Turn-Based Game System in Elixir

One of the best things about building web applications in Elixir is LiveView, the Phoenix Framework feature that makes it easy to create live and responsive web pages without all the layers people normally build. Many great Phoenix LiveView examples

Read more

Read more
By Thomas Ptacek

Docker without Docker

Even though most of our users deliver software to us as Docker containers, we don’t use Docker to run them. Docker is great, but we’re high-density multitenant, and despite strides, Docker’s isolation isn’t strong enough for that. So, instead, we tra

Read more

Read more
By Kurt Mackey

Low Latency LiveView

If you haven’t played with LiveView yet, you should. LiveView is part of Phoenix (Rails-on-Elixir, basically) and helps developers turn simple full stack apps into “rich, real-time user experiences”. It was the first serious HTML-over-websockets imple

Read more

Read more
By Kurt Mackey

Anycast the easy way

Anycast is a technique to announce a single IP block from multiple locations, and let the routers connect people to the “nearest”. Building a simple Anycast setup means acquiring IPs and then “announcing” them using BGP. The first stop is a Regional

Read more

Read more
By Kurt Mackey

The 5-hour CDN

The term “CDN” (“content delivery network”) conjures Google-scale companies managing huge racks of hardware, wrangling hundreds of gigabits per second. But CDNs are just web applications. That’s not how we tend to think of them, but that’s all they ar

Read more

Read more
By Thomas Ptacek

SSH and User-mode IP WireGuard

But Fly is kind of an odd duck. We run hardware in data centers around the world, connected to the Internet via Anycast and to each other with a WireGuard mesh. We take Docker-type containers from users and transmogrify them into Firecracker micro-VM

Read more

Read more
By Jerome Gravel-Niquet & Thomas Ptacek & Jerome Gravel-Niquet

Persistent Storage and Fast Remote Builds

If you’ve been keeping up with us at Fly, you may be picking up on a bit of a narrative with us. Fly launched, in the long-long-ago, with a somewhat narrow use case. We took containers from our customers and transmogrified them into fleets of Firecra

Read more

Read more
By Jerome Gravel-Niquet

The Tokio Upgrade from 0.2 to 1.x

At Fly.io, we run a Rust-based load-balancer which handles almost all of our traffic. It stands on the shoulders of Tokio and Hyper. When the Tokio team announced 0.3 and then 1.0, we figured we’d have to upgrade sooner than later to access related cr

Read more

Read more
By Thomas Ptacek & Dj Walker-Morgan & Thomas Ptacek

You should know about Server-Side Request Forgery

This is a post about the most dangerous vulnerability most web applications face, one step that we took at Fly to mitigate it, and how you can do the same. Server-side request forgery (SSRF) is application security jargon for “attackers can get you

Read more

Read more
By Dj Walker-Morgan

The January 2021 Fly ChangeLog

If you missed 2020, lucky you, to get you all caught up, here’s our Previously On Fly segment. Caught up? Good. And now here is the Fly ChangeLog, covering the end of December 2020 to January 2021. 6PN Networking and IPv6 WireGuard VPNs Let your ap

Read more

Read more
By Dj Walker-Morgan

Fly In 2020 - A year in features (and articles)

TL:DR; Launch, Turboku, Custom Domains, Scaling, One-Click Apps, Persistent Storage, Private Networking and Wireguard VPNs. Fly’s had an unprecedented year, along with everyone else. For us, it was bringing our Application Platform to the world, and

Read more

Read more
By Thomas Ptacek

Building clusters with serf, my new favorite thing

Assume for a second we’d like to see what happens when a web page loads in a browser in Singapore. Easy enough; Fly.io will take a container image you throw at it, transform it into a Firecracker VM, and run it in Singapore. Getting Up And Running We

Read more

Read more
By Dj Walker-Morgan

How to build a global message service with NATS

There are actually two examples that make up this example. One example is a Websocket-based chat that relays its messages through that NATS cluster. The other part is that NATS cluster, configured as a global messaging cluster that you can install in

Read more

Read more
By Dj Walker-Morgan

Get fly with your Fly command line

The command… It started off as flyctl but we kept being asked when would the command become fly. “Why not both?” we said and now, on most platforms, you can use flyctl or fly interchangeably. Boom! Three keystrokes saved! The current app… You alread

Read more

Read more
By Michael Dwan

Graceful VM exits, some dials

Fly apps are typically fast to boot, and it’s relatively easy to boot new VMs. We start them up, do some health checks, and then add them to our load balancer and DNS service discovery. But what comes up must go down. We shut VMs down for any number

Read more

Read more
By Thomas Ptacek

IPv6 WireGuard Peering

They say that when you’re starting a product company, it’s a better plan to chase down something a bunch of people will really love a lot than it is to try to build something that everyone will just like a little bit. So when Fly.io launched, it had

Read more

Read more
By Kurt Mackey

New VMs: more RAM, extra CPU, and a dollar menu

We first showed Fly.io VMs to developers in early 2020. They were most interested in running CPU intensive apps doing image processing, machine learning predictions, and even video transcoding (despite what were, until recently, offensive bandwidth p

Read more

Read more
By Thomas Ptacek

Incoming! 6PN Private Networks

More often than not, modern applications are really ensembles of cooperating services, running independently and transacting with each other over the network. At Fly.io, we’d like it to be not just possible to express these kinds of applications, but

Read more

Read more
By Kurt Mackey

We cut bandwidth prices. Go nuts.

When we launched Fly way back in March, we charged $0.085 per GB to send data out from North America and Europe, and $0.14 per GB for Asia Pacific. Our volume has increased dramatically and pushed our unit costs down, so we lowered our prices as of D

Read more

Read more
By Dj Walker-Morgan

The November Fly Changelog

Example Applications We’ve been focussing on getting more example applications for Fly into your hands. Each guide is complete with a walkthrough of how they were put together so you can see the power of Fly in action. Or you can hop straight to the G

Read more

Read more
By Dj Walker-Morgan

More Appkata Examples to Try on Fly

The latest additions to our Appkata collection of example apps have landed and they cover how to fit Fly to your selected applications and are some super useful apps anyway. So let’s dive in. Node-RED Ever wanted to be able to dive into your cloud ap

Read more

Read more
By Dj Walker-Morgan

Appkata - Example Apps on Fly

To build a modern application, you need to know how to take down your technical challenges in style. It’s a style we call Appkata! Over the coming weeks, we’ll be sharing with you the moves you need to deploy apps onto Fly that let you build faster.

Read more

Read more
By Dj Walker-Morgan

Fly Answers Questions - Suspend, Resume, Restart and Redis

Q: I’d like to park my Fly application for a little while so it isn’t consuming resources. How can I do this without destroying the application and redeploying it later? A: As you’ll have noticed, Fly applications stay running all the time ready to

Read more

Read more
By Dj Walker-Morgan

The October Fly Changelog: Preview Disks and DNS and Better Builtins

Disks in Preview If your application needs to have persistent storage, then the currently in preview volumes feature is for you. The volumes command allows you to create persistent disks for your application. These persist between restarts, deployment

Read more

Read more
By Thomas Ptacek

BPF, XDP, Packet Filters and UDP

Imagine for a moment that you run a content distribution network for Docker containers. You take arbitrary applications, unmodified, and get them to run on servers close to their users around the world, knitting those servers together with WireGuard.

Read more

Read more
By Dj Walker-Morgan

Fly Behind The Scenes: Fresh Logging

Since Fly launched, we’ve been collecting and managing logs for all the applications running on the Fly platform. It’s a critical but often rarely noted function of the platform. When you type flyctl logs, behind the scenes, there is a lot of comput

Read more

Read more
By Dj Walker-Morgan

Stuff Your Pi-Hole From Anywhere

A Pi-Hole could be the hero of your web connection. It blocks advertising at the roots; the DNS roots that is. By setting up your own Pi-Hole, you can tip all your local network’s requests for known advertising domains down it. What is Pi-Hole? Thin

Read more

Read more
By Dj Walker-Morgan

Maps, Apps, and Tracks

Marathons, long and hard. Personally, I wouldn’t be caught doing one, but I’m always up to help someone who is, especially when I can use a bit of Fly to do it. Steve, our global infrastructure whiz, asked if I could think of a good way to track M

Read more

Read more
By Dj Walker-Morgan

The September Fly Changelog: New Names and Easier Updates

Some common requests are addressed this month. One is ‘can you let us type “fly” instead of “flyctl”?’, and it is a shorter command, that is true. Another is can you ‘make updating flyctl easier?’, something we are more than happy to do. And in Septe

Read more

Read more
By Dj Walker-Morgan

Using Heroku Postgres From A Fly App

Heroku supports applications with no apps in them and only add-ons, like Postgres, as a way of providing those services to other applications. As we showed, you can access Heroku Postgres from Fly so it makes it a useful way to get yourself a databa

Read more

Read more
By Dj Walker-Morgan

Migrating Heroku Database Apps To Fly

I was recently asked how the database migration in the original Turboku demo worked. For that original demo, the migration was practically automatic. We already knew that you could access a Heroku database from outside Heroku. Since then, Changes in

Read more

Read more
By Dj Walker-Morgan

Always Be Connecting (with HTTPS)

At Fly, you’ll have already discovered that when you create an app, it appears as http://appname.fly.dev and if you connect there, your browser switches automatically, by redirection, to https://appname.fly.dev. That’s how we do it for the fly.dev

Read more

Read more
By Dj Walker-Morgan

More Fly Answers To Questions

Q: Is it ok to run non-HTTP apps on Fly? From Pier via community.fly.io A: It is, with one caveat: your applications need to have a network service of some kind. Why is that? Well, when your app deploys, we run health checks to ensure you can connec

Read more

Read more
By Dj Walker-Morgan

Flyctl Builtins - The Fly Changelog for August

For the latest version of flyctl, we’ve focussed on making your life fast and simple. From getting your first deployment up and running to setting up a host’s certificate. Builtins First up, we’ve got the new “builtin” builders which you can select w

Read more

Read more
By Thomas Ptacek

Sandboxing and Workload Isolation

Workload isolation makes it harder for a vulnerability in one service to compromise every other part of the platform. It has a long history going back to 1990s qmail, and we generally agree that it’s a good, useful thing. Despite a plethora of isola

Read more

Read more
By Dj Walker-Morgan

Serve small with Fly.io and GoStatic

Static websites are great for carrying unchanging content, be it assets, images, fonts or even, as in this case, an entire site. Well, I say entire site, but if you saw my last article, you’ll know I recently rebranded a Maker organization and needed

Read more

Read more
By Dj Walker-Morgan

Hugo's There - Flying with Hugo and Caddy

There I was wondering what to do about a website for a new community venture I was running where I thought, yes, let’s generate the site with Hugo, serve it with Caddy and run it all on Fly. Why Hugo and Caddy? Well, they both have good reputations as

Read more

Read more
By Dj Walker-Morgan

Flyctl Evolved - Fly Changelog

This flyctl release brings in some big changes in the command structure as we move to an app-centric command style. What does that mean? Well, the apps subcommand is being deprecated; we’ve kept it in place for this release but now all its commands h

Read more

Read more
By Kurt Mackey

Run Apollo Server Close to Your Users

I’m a newly minted GraphQL convert. We built Fly on top of GraphQL and the experience turned me into a shameless cheerleader. An API format with static typing? That’s my jam. (If you don’t care for JAMStack puns you can just go read our guide on bui

Read more

Read more
By Thomas Ptacek

How CDNs Generate Certificates

It’s been a hectic first couple of weeks at Fly, and I’m writing things up as I go along, because if I have to learn, so do you. This is going to be a bit of a meander; you’ll have to deal. Let’s start with “what’s Fly?” Briefly: Fly is a content del

Read more

Read more
By Dj Walker-Morgan

Flyctl meets JSON

Say hello to --json or -j for short. This new flag attempts to present all output from flyctl as JSON. If a command queries the Fly GraphQL API, you’ll get the JSON data from that call in your output. If a command shows you logs, you’ll get the logs

Read more

Read more
By Dj Walker-Morgan

Fly Changelog for 9th June

In this edition: a new way to install flyctl (and native Windows installers), new commands in flyctl that let you restart, list and monitor applications, an improved open command and an important update to the Deno Buildpack. Flyctl New instruction

Read more

Read more
By Dj Walker-Morgan

Fly Changelog for 29th May

You can get the Changelog in the blog or through an RSS feed of just changelog updates available on fly.io/changelog.xml. There’s also a dedicated ChangeLog page with all the recent updates. Most of this week’s changelog items are covered in an recen

Read more

Read more
By Dj Walker-Morgan

Fly - Now With Power Pause

What’s a pause for? When you start building your applications, there may come a point where you don’t want to keep your application running - mothballing while another project happens, schedule delays, or just plain wanting to manage your costs. Tha

Read more

Read more
By Dj Walker-Morgan

WebSockets and Fly

WebSockets are powerful things for creating interactive applications. Example Zero for WebSocket examples is the chat application. This leverages WebSockets’ ability to keep a connection alive over a long period of time while bidirectionally passing

Read more

Read more
By Dylan Jhaveri

Mux, Fly, Wocket and RTMP

Wocket (WebSocket to RTMP) This project is a proof-of-concept to demonstrate how you can stream live from your browser to an RTMP server. Streaming via RTMP is how you stream to Twitch, Youtube Live, Facebook Live, and other live streaming platforms

Read more

Read more
By Dj Walker-Morgan

Fly Changelog May 15th 2020

Since the last ChangeLog, we implemented a whole new scaling system with updates to the platform and flyctl. You can read all the details in the Updating Scale article. We’ve also been improving the performance of our backhaul, which moves traffice b

Read more

Read more
By Dj Walker-Morgan

Deno on Fly

We’ve been working with Deno for Fly for a while and its great blend of TypeScript, V8, Rust and simplicity makes for a great app experience. And great apps deserve a great deployment. We enjoy Deno so much that when we brought out our first cloud na

Read more

Read more
By Dj Walker-Morgan

Updating Scale

We have been recently looking at how scaling commands work on Fly and we’ve come up with a new system with a simpler model and more compact command set to work with. We’d like to introduce it to you today. The Scaling System Previously, at least in t

Read more

Read more
By Dj Walker-Morgan

Fly Changelog 1st May 2020

Since the last ChangeLog, we’ve introduced some enhancements to flyctl which make it easier to deploy tagged local and remote images directly to Fly. There is also a new load-balancing algorithm in operation which should be more effective with widely

Read more

Read more
By Dj Walker-Morgan

Deno on Fly using Buildpacks

Read more

Read more
By Dj Walker-Morgan

Imaginary on Fly, just One-click

Warning: This document is old! It is likely wrong in some important way. The folks behind Imaginary have worked with Fly and they also added the one-click launcher to their README on GitHub so that potential Imaginary users can be up, converting, res

Read more

Read more
By Dj Walker-Morgan

Fly Changelog 17th April 2020

This past week has been one focused on the Fly infrastructure with earlier certificate renewals now in place and a dedicated Changlog page. We also made time to bring in some user contributed changes to the flyctl which make debugging fly.toml file

Read more

Read more
By Dj Walker-Morgan

Fly Changelog 9th April 2020

7th April 2020 FlyCtl – v0.0.115 released Buildkit support. Setting environment variable DOCKER_BUILDKIT to 1 will enable use of the v2 buildkit backend which performs async parallel builds. For compatibility, DOCKER_BUILDKIT defaults to 0. The -

Read more

Read more
By Dj Walker-Morgan

Powerbuilding with Fly

Identifying your build When you deploy, the flyctl application looks for instructions to build the image in a Dockerfile or creates a builder VM to do the image build. Let’s start with the flags that control where flyctl looks for things. -c, –confi

Read more

Read more
By Dj Walker-Morgan

Fly Answers More Questions

Q: What if I get a large number of malicious TCP connections from around the world that are malicious and cause a large number of apps to be launched in the various datacenters. Are we on the hook for the bill? And is there anything in place to stop

Read more

Read more
By Dj Walker-Morgan

Making Datasets Fly with Datasette and Fly

I’ve always liked finding a good dataset. With a background in databases and writing, I know a good dataset can bring a demo to life, be it a census of Squirrels in Central Park or a survey of grocery purchases in London. Datasets can also provide va

Read more

Read more
By Dj Walker-Morgan

Continuous Deployment with GitLab

Starting with Continuous Deployment to Fly To deploy to Fly you essentially need four things The application you want to deploy. A runnable copy of flyctl. A fly.toml file. Your Fly API Token. For this example, we’ll deploy hellofly, our small Go

Read more

Read more
By Dj Walker-Morgan

Fly Answers Questions

Q: Can I set up a custom hostname or domain with Fly? A: You can. In fact you can set up as many of them on an application as you like. When you create a custom hostname on Fly and validate it, you also get Let’s Encrypt certificates automatically. Yo

Read more

Read more
By Dj Walker-Morgan

Scaling Fly for All

Update 15/May/2020: The contents of this article have been superceded by a new scaling system on Fly. We’ve refined the scaling models and commands to make things simpler to use. To read about these changes see the article on the updated scale system

Read more

Read more
By Dj Walker-Morgan

How to do Custom Domains with Fly

In Custom Domains with Fly, you’ll learn how to configure an NGINX server to proxy traffic to external sites and how to attach host and domain names to your Fly applications using Fly’s command line flyctl. For those of you who practice devops and

Read more

Read more
By Dj Walker-Morgan

Fly Friday - News and Tips

This week with Fly: We show you how to use Fly to build your own GraphQL APIs. Firefox is switching DNS over HTTPS (DoH) on by default in the USA. We already have a great guide to using Fly as your private DoH service. Fly’s new community portal for

Read more

Read more
By Dj Walker-Morgan

GraphQL, Hasura and Fly

Hasura gives you an open source GraphQL backend which can make it simple to query PostgreSQL by helping you map all your schemas and roles. It also rolls in the ability to query other GraphQL services so you can mix in services. With an interactive c

Read more

Read more
By Dj Walker-Morgan

Fly Friday - Customizing with Dockerfiles

We deployed Docker’s official httpd image in our first Fly Friday video. That image, when run, serves up files from its /usr/local/apache2/html. By default the image contains the words “It works”. If we want it to say something else, we need to copy

Read more

Read more
By Dj Walker-Morgan

Fly Friday - Flyctl and Ports

TL;DR: The -p flag is used with flyctl apps create when you create a Fly app for the first time. Setting -p with a numeric value automatically sets the internal port of the generated fly.toml configuration file. The internal port is the port your a

Read more

Read more
By Dj Walker-Morgan

Simpler Fly deployments for NodeJS, Rails, Go, and Java

A Speedrun for everyone Let’s get straight down to it. Make sure you have the latest version of flyctl and then get a Node application like this version of our hello world example - “hellonode-builder”. git clone https://github.com/fly-

Read more

Read more
By Dj Walker-Morgan

Turboku - The Art Of Faster Heroku Apps

The next question is how can they move their application the Fly. For that we’ve created “Turboku”, a simple way to bring your Heroku apps to Fly. What we do is take your Heroku web dynos and turn them into Fly applications automatically. That

Read more

Read more
By Dj Walker-Morgan

Command Lines, Flyctl and Fly

Why Command Lines? As we’ve developed Fly, we’ve seen numerous benefits that come from driving the service through the command line. Our newest addition to our command armory is the flyctl command which now, quite literally, covers the entire lifecycl

Read more

Read more
By Dj Walker-Morgan

Welcome To Fly In 2020

Check out our all new documentation for the Fly platform which covers everything from creating Apps you can deploy to Fly to how to take existing Docker images and setting them free across the globe. If you have any questions, drop a line to us on su

Read more

Read more