This is a Logbook post. It tells you what we’ve been up to here at Fly.io, to make running your code close to users better in all the ways. The proof of the pudding is in the eating, though, so you should dig in now; you can have an app up and running in mere minutes.
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 little bit specific. Conversely, have you ever wished that $99+ of monthly resource usage would come with support by email? Now it can!
I don’t want to write spoilers for everything, so read on.
The changelog’s broken up into sections this time around, largely to corral the ongoing torrent of flyctl improvements. Keep your flyctl up to date to take advantage. If you’re playing (or working) with our new fast-booting machines VMs and flyctl, be sure to scan these changes! As always, if you’re interested in digging deeper into flyctl changes, dive into the releases page on GitHub.
- [Feature] changelog The Pro Plan now includes usage credits equivalent to its price: $99. Read more.
- [Feature] We are now SOC2-compliant. If you know, you know. But you should read the blog post regardless. It’s fun. SOC2: The Screenshots Will Continue Until Security Improves
- [Feature] Added support for Volume expansion via
fly volumes extend <id>. This feature is now available with flyctl version
- [Feature] Added SFTP support to Hallpass. It’s a pain to move files to and from a Fly app. Now you can
sftpfiles by connecting to 6PN over WireGuard. We haven’t yet integrated this into flyctl.
- [Feature] Personal Organizations are no longer special 🎉 meaning the default organization we expect every user to have is less restricted. You can now add/remove members and upgrade your plan.
- [Feature] Added a new transit provider and some BGP routing announcement changes with Netactuate. This should improve routing, which should improve latency for customers.
- [Feature] Updated our Heroku webhook handling to email users when we’ve been unable to refresh their tokens on our end, and thus unable to auto-deploy their Heroku app releases to Fly.io.
- [Feature] Wrote an internal walkthrough on updating customer account information in Stripe, to make it easier for team members to help a customer update their info—which means it’s done faster for the customer!
- [Fix] Fixed a bug that may have been preventing autoscaling from working properly for ~75% of all apps using the feature.
- [Fix] Fixed the Fly Redis image to start correctly, error if something goes wrong at startup, and only require REDIS_PASSWORD to boot.
- [Fix] Creating an app via the GraphQL API with a
runtimeused to result in a cryptic error for people using the API directly. The API now properly enforces our default “Firecracker” runtime on app create, so this shouldn’t happen anymore.
- [Fix] Resolved some more issues folks have found by using the API directly. Trying to execute a template deployment via the API without defining apps in the template input would respond with a generic server error; it should now respond with a validation message. Also, fetching the flyctl version via GraphQL was causing generic errors - this is no longer the case.
- [Docs] Added docs for mounting persistent volumes via the machines API.
- [Docs] Updated the Laravel docs with details on changing the PHP version, and getting full stack traces.
- [Blog] Published The Serverless Server, a delightful romp through the building of a fictitious, yet somehow very familiar, Functions-as-a-Service service, from the metal up.
LOG_LEVEL=debugnow formats and colorizes JSON requests and responses for readability.
- [Feature] Deprecated
fly createin favor of
fly apps createso as not to have to keep arguments/flags in sync.
- [Feature/Fix] We fixed a regression in
fly launchfor Phoenix apps causing the config file to lose the
PORTenvironment variable. We also added full-stack tests that detect
fly launchregressions for future Phoenix releases and
- [Feature] Improved the Laravel launcher for the
fly launchcommand via Laravel Launcher improvements.
- [Feature] Split up flyctl launch scanners to make them easier to work on, and to more clearly indicate which frameworks we support and where to contribute.
- [Fix] Fixed a flyctl regression preventing the
apimodule from being imported externally.
flyctl & machines
fly deploynow supports machine-based apps by adding
version = 2to
fly statusalso works for them, and new machine apps may be launched with
fly machine launch. More details about this coming soon, along with docs on the new config format.
fly machine) commands now will work without having to specify an app name in
fly.tomlor on the command line. This is useful when working with individual machines across multiple apps.
- [Feature] Mounted volumes are now preserved correctly across machine app deployments handled by
fly machine statusnow displays attached volumes.
- [Feature] Machines cloned with
fly machine clonewill no longer pass volume config to the clone.
fly apps create --machineswill create an app for the new machines platform up-front.
- [Feature] For stopped/exited machines,
fly machine statusnow shows the exit code, whether the machine was killed by OOM, and whether it was requested to be stopped.
- [Feature] Added
fly machine status --display-configto display the full syntax-highlighted machine config. Useful for debugging.
- [Feature] Updated
fly machine clonefor the new machines API, allowing machines users to quickly scale an app up, or out to other regions.
fly deployfor machines apps will now run rolling deploys, waiting for each VM to start before moving on.
- [Feature] Added a volume size column to the volumes list on the dashboard app page (and formatted the date properly).
- [Feature] Applied the cool new layout to our most-frequently-sent emails.
- [Feature] Changed the font in the image details section (in the dashboard app overview tab) to monospace to make it nicer to read.
- [Feature] Changed date formatting for app secrets tab to make it easier to read when an environment variable was created.
- [Feature] Simplified the flow on fly.io/documents. Clicking on an action button will just send you to the documents page for your personal org.
- [Feature/Fix] Styling improvements for the app metrics page, for readability. Fixed some weirdness due to conflicts with leftover styling from the old Rails UI.