# NATS Persistent Storage
## Setup
### NATS
You'll need a running instance of NATS that is running with Jetstream. You'll be able to run one using Docker.
From https://docs.nats.io/running-a-nats-service/introduction/running/nats_docker/jetstream_docker :
```bash
docker run --rm -it -p 4222:4222 -p 6222:6222 -p 7222:7222 -p 8222:8222 nats -js -DV
```
### Connectivity options
#### Using environmental variables
The default struct constructor for both the Metadata storage and the Notification storage uses environmental variables to set up a NatsStore.
NATS_HOST | nats://localhost | Nats Host to connect to
NATS_APP | Unknown Nats app | User presented name of the app connecting
NATS_USERNAME | | User name to connect with. Both this and password needs to be set otherwise it is ignored.
NATS_PASSWORD | | Password to connect with. Both this and username needs to be set otherwise it is ignored.
NATS_BUCKET_NAME | tokiocron | Key/Value bucket to store values in
NATS_BUCKET_DESCRIPTION | Tokio Cron Scheduler | key/Value bucket description.
#### Provide own Jetstream instance
Both NatsMetadataStore and NatsNotificationStore encapsulates a NatsStore that in turn encapsulates a Jetstream instance usin . Provide it accordingly. See https://github.com/nats-io/nats.rs .