Hatchbox v2 is out! Learn more

What's New

New updates and improvements to Hatchbox.io

Ruby 3.1.3, 3.0.5, and 2.7.7 support

New
We've added support for the new Ruby versions: 3.1.3, 3.0.5, and 2.7.7

These new Ruby versions include a security fix for CGI. Read more.

BUNDLE_WITHOUT

Update
To provide more flexibility, we will no longer set the bundle "without" config. Bundler will install all gems during deploys by default now.

If you would like to speed up deployments as before, you can set the BUNDLE_WITHOUT environment variable to skip development and test groups.

BUNDLE_WITHOUT="development:test"

OpenSSL Updates

Update
Ubuntu has released a patch for OpenSSL for the recent CVEs. Rather than upgrading OpenSSL versions, they patch the current version to prevent bugs and regressions in LTS releases.

We've also recompiled all Ruby versions that use OpenSSL 1.1 against OpenSSL 1.1.1s so they also receive the patches. To update your apps, deploy a new version and the updated version of Ruby and OpenSSL will be installed.

Ruby 3.0.4 and Node.js 18.12.1 are now defaults

Update
The default versions for Ruby and Node.js have been updated to the following:
  • Ruby 3.0.4
  • Node.js 18.12.1
If your application doesn't specify a version, we'll use these defaults.

See the Help section to learn how to run specific versions of these languages for your applications.

PostgreSQL 15 is now the default

Update
Today, we updated Hatchbox to start installing PostgreSQL 15 and we're also recording the currently running version so you can see it in the Web UI.

For existing users on older versions of PostgreSQL, you can follow this guide to upgrade your databases to the latest version: Upgrading PostgreSQL Version on Ubuntu Server

Caddy v2.6.2

Update
We've updated Caddy server to version 2.6.2. This adds support for HTTP/3 protocol. Read more about HTTP/3 here

Since HTTP/3 utilizes QUIC transport, you'll need to allow UDP traffic in your network/firewall to use it.

To update to this version, click "Configure" on your servers to update them to the latest.

Apps without web servers

Improvement
We've updated Hatchbox to support clusters with more unique configurations. Clusters can now deploy apps that don't have a Web Server.

For example, if you've got an app that solely runs background jobs, you can now deploy it with Hatchbox. 👍

Custom SSL Certificates

New
You can now upload custom SSL certificates for your applications. We'll upload these to your web servers & load balancers and configure Caddy to use them for serving requests to your app. If you don't want to use LetsEncrypt for some reason, this will make it easy for you to still use SSL. 

Dynamic AWS Regions & Instance Types

Improvement
We now use the AWS API to look up Regions and Instance Types available to your account. The regions and instance types will always be accurate and list what's available for you to use.

Hatchbox Environment Variables

New
We've just updated deployments to set a few environment variables on each deploy.

  • HATCHBOX_BRANCH - The branch that was deployed
  • HATCHBOX_RELEASE - The release number
  • HATCHBOX_REVISION - The git commit sha that was deployed

We also now write a REVISION file with the git commit sha as well for easy access.

Unmanaged Redis Database Backups

New
You can now backup your unmanaged (local) Redis database with Hatchbox. Just like PostgreSQL and MySQL backups, you can configure how often they run and where they get uploaded by visiting the database backup settings.

This will backup the entire Redis instance, so you will only need to enable backups on one Redis database in Hatchbox. Redis doesn't treat database separately like other databases.

Socket Activation

Improvement
You can now enable socket activation for processes like Puma.

Why is this important? When HTTP requests hit a server, Caddy will forward the request along to your web server like Puma. Puma is listening on socket and that's how Caddy talks to Puma. During a restart, Puma will stop listening to the socket for a short period of time. Caddy will not receive a response from Puma and will render a 500 error.

With Socket Activation, Systemd will keep the socket open and buffer requests while Puma restarts. During a restart, no requests will be dropped and will simply pause until Puma is ready to start handling requests again. 

AWS IP Address Changes

Improvement
AWS changes EC2 instance IP addresses anytime the server is stopped. Originally, we solved this by adding Elastic IPs to the servers, but AWS limits the amount of Elastic IPs you can have.

We've replaced this with a script that hits Hatchbox's API with the current IP address each time your EC2 instance boots. This solves the problem elegantly and allows us to remove the need for Elastic IPs. 

Hatchbox v2 is now available!

New
We've rewritten Hatchbox from scratch to bring you a huge amount of improvements. 

Here's a quick list of some major improvements:
  • Switched from NGINX + acme.sh to Caddy for seamless SSL certificates and API configuration.
  • We've dropped Passenger and now reverse proxy requests for applications to provide consistent logging and configuration.
  • You can now create databases (unmanaged or managed!) at any time and easily attach them to apps.
  • We're now using ASDF for language version management which makes it easier for you to choose Ruby, Node.js, and even other programming languages when deploying.
  • Connections to hosting and Git providers is also much easier to manage.
  • Pricing has switched to metered billing so you only pay for what you use. No more dealing with tiers.

Plus, there's more improvements than we can even remember. It's been a long time coming.

What about Hatchbox Classic?
Don't worry! Hatchbox Classic isn't going anywhere. We'll keep it running and do routine maintenance so your applications are safe and sound. However, we won't be adding features to it anymore. For example, we won't be adding support for Ubuntu 22.04 Jammy on Classic.

You can login to Hatchbox Classic at https://classic.hatchbox.io

If you'd like to upgrade to the new Hatchbox, we recommend the following steps:
  1. Sign up for Hatchbox v2 (they're separate accounts)
  2. Create a new cluster
  3. Deploy your app
  4. Copy your database to the new cluster
  5. Test everything and make sure it all works
  6. Change your DNS
  7. Shut down your Hatchbox Classic cluster

This will provide you a smooth upgrade process with minimal downtime. Since we've upgraded all the underlying tools in Hatchbox, it's not possible to upgrade Classic servers to the new configuration easily. Plus, this way you'll be able to keep the old version running while you test out the new version.

Trigger backups from the web

New
You can now start a backup manually for an unmanaged database on the Web. Just click "Start Backup" on the database page and it will kick off a job to start a manual database backup whenever you want.

Deploy App From Subfolder

New
We now support deploying App from a subfolder. This is useful if your app codebase resides in your repository's subfolder.

You can find the setting under App > Repository. 

Ability to rename Apps

New
You can now rename* Apps from the settings page to better suit your needs. 

renaming an app may result in temporary downtime

Upgraded SSH Keys

Improvement
We've upgraded Hatchbox to use ed25519 SSH keys by default. SSH RSA is no longer accepted by default in Ubuntu 22.04 and we've adjusted accordingly to support them.

For clusters created before April 2022, we've generated new SSH keys and have added them to your servers. There's nothing you need to do on your end. 🎉

To connect to your servers over SSH, make sure you're using a compatible SSH key for Ubuntu 22.04. If you don't, SSH will refuse the connection.

Ubuntu 22.04 Support

New
You can now deploy to Ubuntu 22.04 LTS Jammy Jellyfish servers. 22.04 is also the new default version used for any new servers that are created. 

Long term support means this server version is supported for 5 years and is the best version to use for production servers.

Bundler Version

Improvement
Hatchbox will now detect the Bundler version from your application's Gemfile.lock and install that during deploy. This will make it easier to deploy older Ruby applications that use Bundler 1.x.
© 2022 GoRails, LLC