heroku-buildpack-borealis-pg-ssh
create-react-app-buildpack
Our great sponsors
heroku-buildpack-borealis-pg-ssh | create-react-app-buildpack | |
---|---|---|
2 | 6 | |
1 | 3,328 | |
- | - | |
0.7 | 1.6 | |
over 1 year ago | almost 2 years ago | |
Shell | Shell | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
heroku-buildpack-borealis-pg-ssh
-
A Heroku add-on that puts a PostgreSQL DB in its own virtual private cloud
So how does an app connect? I wrote a Heroku buildpack to take care of that seamlessly (borealis/postgres-ssh). When you add the buildpack to an app, it automatically identifies any config variables from my add-on and sets up a persistent SSH local port forwarding connection to the database server using autossh. The app can then connect to the database via a standard PostgreSQL client library using the add-on's DATABASE_URL config variable without having to be aware of the SSH connection in any way. In other words, application code doesn't have to change at all to support it. If the app works with the first-party Heroku Postgres add-on, it should work with my add-on, too.
-
Show HN: PostgreSQL in a virtual private cloud on Heroku
Having used Heroku extensively at my previous job I became aware of what I perceived to be a major drawback of database add-ons in Heroku's marketplace: they all seem to allow connections directly from the public internet (or at least from anywhere on AWS's network) for the sake of convenience for app developers (and probably the add-on developers too!). That way, an app developer need only to retrieve the DB connection URL from the corresponding config variable (i.e. environment variable) in application code to connect to the DB. But leaving DB servers exposed to the whole world seems a clear violation of security best practices.
Heroku has a solution to this problem, of course: Private Spaces. In a private space, your app's dynos and some of its add-ons are hosted together within a virtual private cloud (VPC) that is firewalled off from the rest of the internet. It comes with a couple important caveats, however: you have to have a Heroku Enterprise account (which is expensive and requires you to give up the option to use some of the cheaper dyno types) and it only supports a handful of select add-ons (only first party, it seems) to be sequestered within the app's VPC.
My new add-on service aims to provide an alternative that sits somewhere between the extreme simplicity and relative inexpensiveness of DB add-ons running on the Common Runtime and the considerably more expensive Private Spaces while offering a similar level of security as Private Spaces. It's called Borealis Isolated Postgres and its in beta now (the beta is free): https://elements.heroku.com/addons/borealis-pg
With my add-on, each DB server is in a PostgreSQL-compatible Amazon Aurora cluster isolated within its own VPC. All connections to a DB server are required to be forwarded through an SSH server that is dedicated to that VPC.
So how does an app connect? I wrote a Heroku buildpack to take care of that seamlessly (https://github.com/OldSneerJaw/heroku-buildpack-borealis-pg-ssh). When you add the buildpack to an app, it automatically identifies any config variables from my add-on and sets up a persistent SSH local port forwarding connection to the database server using autossh. The app can then connect to the database via a standard PostgreSQL client library using the add-on's DATABASE_URL config variable without having to be aware of the SSH connection. In other words, application code doesn't have to change at all to support it. If the app works with the first-party Heroku Postgres add-on, it should work with my add-on, too.
Connecting from your local machine or a CI server to a database server is also straightforward. I wrote a Heroku CLI plugin (https://www.npmjs.com/package/borealis-pg-cli) with a couple simple commands to either run DB scripts (e.g. DB migrations to be executed during CI/CD) or open a persistent tunnel locally (e.g. for ad hoc data administration). It also has a few commands for managing which PostgreSQL extensions/modules are installed since the app user does not have privileges to do so in SQL (remember, it's a managed DB service).
During the beta all add-ons are provisioned in a multi-tenant environment to keep costs down, but when released into general availability, each premium add-on will operate in its own fully isolated VPC that is only accessible via private SSH server. I have not yet decided whether I will continue to provide a free, multi-tenant option after GA, though.
If you're already a Heroku user, you can provision the add-on directly (for free) here: https://dashboard.heroku.com/provision-addon?addonServiceId=de00ba11-8b65-47cd-b099-9605703a6e30&planId=beb31eff-e2df-4750-b73a-29542c3dc79f
Docs are here: https://devcenter.heroku.com/articles/borealis-pg#getting-started
Let me know what you think!
create-react-app-buildpack
-
The future of React projects on Heroku
I just started learning React and have been deploying to Heroku since it has worked the best in the past. I saw that the most popular build pack will soon no longer work as Heroku is upgraded. What does this mean for the future of React projects on Heroku?
-
How to Deploy a React App to Heroku in 5 Minutes in 5 Easy Steps
Once you click add buildpack, it displays a pop-up on the dashboard. Paste this link in the Enter Buildpack URL and click on save changes. That is all you have to do.
- Create-React_app with Rails, cannot move from Dev to Production Mode
-
Deploying DApp to heroku: Part (4/4)
https://github.com/mars/create-react-app-buildpack.git
-
Having an insane amount of trouble making a Fullstack React App
the 405 is being thrown by the nginx reverse proxy that's run as part of the community create-react-app buildpack for heroku. I haven't dug in deeply but I'm assuming you're using this and that'd be the place to start. there's some noise about 405s being 'disallowed' for builds using Heroku's static buildpack (which this one does), but I have no idea why, how or if that's actually the case. good luck
-
Hosting React/Rails app on Heroku requires 2 dynos?
I'm not sure you need a dyno for React as it runs in a user's browser. You just need a way to serve the JS to your user. After a quick google search I found this article and this Heroku buildpack. Good luck
What are some alternatives?
python-poetry-buildpack - Heroku buildpack that makes it possible to use Poetry with the official Python buildpack
subdir-heroku-buildpack - Allows to use subdirectory configured via environment variable as a project root
custom-ssh-key-buildpack - :key: Add an SSH key to you Heroku dyno :key:
Dokku - A docker-powered PaaS that helps you build and manage the lifecycle of applications
heroku-buildpack-python - Heroku's buildpack for Python applications.
heroku-opus - opus codec as a heroku buildpack
mlflow-easyauth - Deploy MLflow with HTTP basic authentication using Docker
heroku-buildpack-google-chrome - Run (headless) Google Chrome on Heroku
astro - Code to accompany Astro articles.
heroku-buildpack-phoenix-static - A Heroku buildpack for building Phoenix's static assets
heroku-buildpack-jemalloc - Heroku buildpack that installs the Jemalloc memory allocator