Emissary is designed to work in a wide range of environments, so you have several options for bootstrapping the application on your servers. The core configuration required to run an Emissary server provides answers to three basic questions:
- What domains should I respond to?
- Where are my templates stored?
- Where do I save files, like uploads and SSL certificates.
This core configuration data can be stored in the filesystem (either a local disk or network attached) or in a database.
1. Bootstrapping from the Filesystem
By default, when you run Emissary from the command line with no additional options, it will look for a configuration file in the local directory named config.json.
Custom File Locations
You can specify a different filename or location for your configuration data by starting emissary with a command line option like this:
% emissary --config=file://path/to/config.json. Emissary will load its configuration data from a local drive, NAS, or any other path available to your server’s filesystem.
While running, Emissary will watch the file for changes, so if you (or some other external process) update it out-of-process, those changes will be reflected in your live server instantly.
If you are running Emissary for the first time, you should also include a
--setup flag in the command line to open the Setup Console, which will initialize a new configuration file for you and give you an easy way to modify the default settings.
2. Bootstrapping from a Database
In some circumstances, you may not want to store your configuration in the filesystem, local or otherwise. In this event, Emissary lets you pull configuration from a mongodb database. Just start the server with a MongoDB connection string like this:
% emissary --config=mongodb://connection-string-with-username-password.
Emissary will open the MongoDB installation and look for a database named “Emissary” that should contain its domain and file location data. The server will not run if this database and collection do not exist. If you are connecting to a database for the first time, add the
--setup flag to the command line to launch the Setup Console.
Just like the filesystem configuration, Emissary will watch the database for changes, and will reload the system configuration in real-time for every update.
Clustering With Database Configuration
The best way to run a cluster of Emissary servers is to point each one of them at the same MongoDB database. That way, you can easily provision new domains and have them respond across all servers in the cluster instantly.
3. Using Environment Variables
In many cloud-based hosting environments, you may not be able to specify a command line argument. In this case, you can use an environment variables instead of a command line parameter. To locate the configuration file in this way, first create an environment variable called EMISSARY_CONFIG:
EMISSARY_CONFIG = file:// or mongodb:// location
Then, you can launch Emissary directly:
% emissary (no config path required)