Deploying a Conduit Application on Remote VMs
For other deployment options, see Deploying Conduit Applications.
Purpose
This document will describe the steps to deploy a Conduit application to a remote machine that you are able to ssh
into. This is often the case for Amazon Web Service (AWS) EC2 instances, Google Cloud Compute Instances, Azure Virtual Machines, and rented boxes on platforms like Digital Ocean or other cloud providers.
If you are unfamiliar with deploying applications in this way, this is not a good beginner's guide and will not cover many of the steps necessary to deploy an application. Prefer to use a platform like Heroku or one that supports Docker. See the guides on Heroku and Docker for better options.
Summary
Conduit applications are run by using conduit serve
or dart bin/main.dart
.
# in project directory
conduit serve
# or
# in project directory
dart bin/main.dart
The target machine must have Dart installed. If you are using conduit serve
, you must also activate the CLI on the target machine:
pub global activate conduit
Your source code must also be available on the target machine. You can transfer your source to a machine with tools like ftp
, scp
, rsync
and git
.
Conduit will listen on port 8888 by default. Change this value at the CLI conduit serve --port 80
or in bin/main.dart
. Ensure that security controls on your instance can accept connections on the port Conduit is listening on. It is preferable to use a reverse proxy (e.g. nginx or a load balancer) instead of serving the application directly.
Use tools like supervisord
to ensure the application restarts if the VM crashes.
Configuration Management
When deploying directly to a VM, it is your responsibility to manage your configuration file. This can often be done by transferring an environment specific config.yaml
file to your target machine and storing it in your project's directory on the remote machine.
CLI Tools
Many deployments will need to perform database migrations and OAuth 2.0 client identifier management with the conduit
CLI. You can run these tools locally with the --connect
flag to specify the location of your database instance. Ensure that you have the propery security controls to access the database instance from your local machine.