Getting Started

Frequently Asked Questions

»Do you support HTTP/2 and HTTP/3?

Yes. Web apps running in Adaptable automatically support modern browsers using the next generation HTTP/2 and HTTP/3 protocols, which can improve performance for your app's users. Adaptable's highly scalable load balancing tier handles these protocols for you, without making any changes to your app code. Your app code only needs to handle HTTP/1.1 requests, which all commonly used HTTP servers and frameworks handle.

»Do I need to set up HTTP proxy support in my app?

Yes, if your app relies on getting the correct hostname or base URL for your app or needs access to the client (browser) IP address. Web apps running in Adaptable are behind a proxy tier that provides load balancing, HTTPS encryption, and advanced HTTP protocol support. Because of this additional proxy tier, your app may need to use alternate HTTP headers to get hostname and client IP information.

When your app is running behind a proxy tier in Adaptable, the environment variable ADAPTABLE_TRUST_PROXY_DEPTH will be set to an integer value that indicates how many proxies your app is behind. (This number may vary depending on the Deploy Template your app uses.) And in each HTTP request, the X-Forwarded-For, X-Forwarded-Host, and X-Forwarded-Proto headers are provided to give your app information about client IP address, hostname, and client network protocol respectively.

Most HTTP server frameworks, such as Express and Flask, process these headers automatically if configured to do so.

This example shows how to set up a Node.js Express app to use the proxy headers:

const app = express();
const proxyDepth = parseInt(process.env.ADAPTABLE_TRUST_PROXY_DEPTH, 10);
if (proxyDepth > 0) {
// 'trust proxy' is the number of IP addresses to trust in the
// X-Forwarded-For header, so set to the number of proxies plus one for the
// client IP address.
app.set('trust proxy', proxyDepth + 1);
}

»Do you support the WebSocket protocol?

Yes, Adaptable fully supports the WebSocket protocol.

»Can I store files on local disk in my app?

When your web app is running in Adaptable, the local disk available to your app is a temporary memory disk. Your app can write to it, but the contents of that disk will be lost if your app shuts down or is scaled down, so it is not appropriate for permanent file storage. The local disk is also not shared between multiple instances of your app.

Instead of writing important data to local disk, you should use a database, such as one of Adaptable's scalable managed databases. For larger files or objects, consider using something like MongoDB's GridFS or an object store such as Amazon S3 or Google Cloud Storage.

»What database and ORM versions are supported for Adaptable databases?

Typically, the most recent database drivers and ORMs are compatible with databases that Adaptable provides. However, some known version limitations are listed below.

»Adaptable MongoDB

Driver/ORMMinimum version
Mongoose6.0
Node.js driver4.1.0
PyMongo3.12.0
TypeORMIncompatible*

»Adaptable PostgreSQL

No known incompatibilities

»Adaptable MS SQL Server

No known incompatibilities

»Do you have a Deploy Template for my type of app or language?

We currently support the following Deploy Templates:

To request a new type of Deploy Template for your favorite app or language, contact us.

»Can I create my own Deploy Template?

Currently, we only support Deploy Templates provided by Adaptable. In the future, we plan on allowing you to use your own Deploy Template or one created by the community. To request a specific type of template or to get notified when use of custom templates become available, contact us.