greenlock-store-sequelize.js/README.md

110 lines
2.4 KiB
Markdown

# [le-store-sequelize][1]
> A database-driven Greenlock storage plugin with wildcard support.
## Usage
To use, provide this Greenlock storage plugin as the `store` attribute when you
invoke `create`.
```js
var store = require('le-store-sequelize');
var gl = greenlock.create({
store,
approveDomains,
...
});
```
## Wildcards & AltNames
Working with wildcards and multiple altnames requires Greenlock `>= v2.7`.
To do so you must set `opts.subject` and `opts.domains` within the
`approvedomains()` callback.
`subject` refers to "the subject of the ssl certificate" as opposed to `domain`
which indicates "the domain servername used in the current request". For
single-domain certificates they're always the same, but for multiple-domain
certificates `subject` must be the name no matter what `domain` is receiving a
request. `subject` is used as part of the name of the file storage path where
the certificate will be saved (or retrieved).
`domains` should be the list of "altnames" on the certificate, which should
include the `subject`.
## Example
```javascript
function approveDomains() {
}
```
## Configuration
### Defaults
No configuration is required. By default, you'll get a baked-in Sequelize
database running sqlite3.
```javascript
greenlock.create({
store: require('le-store-sequelize'),
...
});
```
### Database Connection
Without `config.dbOptions`, the baked-in sequelize object uses sqlite3 with
default options. If `config.dbOptions` is provided, you can configure the
database connection per the Sequelize documentation.
```javascript
var store = require('le-store-sequelize')({
dbConfig: {
username: 'mysqluser',
password: 'mysqlpassword',
database: 'mysqldatabase,
host: '127.0.0.1',
dialect: 'mysql'
}
});
greenlock.create({
store,
...
});
```
The database can also be configured using an env variable.
```javascript
var store = require('le-store-sequelize')({
dbConfig: {
use_env_variable: 'DB_URL'
}
});
```
### Custom Database Object
You can pass in your own database object if you wish. It doesn't actually even
have to be a Sequelize database object, as long as the object responds to the
implemented methods and returns the expected results.
```javascript
var db = new MyDatabase();
var store = require('le-store-sequelize')({
db
});
greenlock.create({
store,
...
});
```
[1]: https://www.npmjs.com/package/le-store-sequelize