# MongoDB Atlas Database
```{admonition} Too complicated? Not what you're looking for?
:class: seealso
Consider a hosted Nightscout service! Check for easier solutions [here](/index.md#nightscout-as-a-service).
```
```{card}
## MongoDB Atlas Database
![MongoDB Atlas](/vendors/img/Atlas.png)
^^^
MongoDB bought [mLab](https://twitter.com/chrisckchang/status/506959446753284096) in 2018 and shutdown its service in 2020. Most users migrated to MongoDB Atlas, using a free M0 database with a limited 512MB capacity. Leaving the database grow uncontrolled usually leads to a Nightscout crash.
**Pros**:
* The M0 cluster is free
* Nightscout was adapted to MongoDB Atlas
**Cons**:
* M0 clusters are designed for learning and testing, not production
* There is no warranty the M0 cluster will remain in the future
* A larger M2 cluster costs 9$ per month (consider hosted Nightscout)
* A full M0 database crashes Nightscout, this is a common issue for DIY closed loop system users
```
```{note}
MongoDB Atlas regularly changes the site aspect. If you encounter a page not matching this documentation search for keywords like `not now`, `skip` or `later` to continue. Report discrepancies [here](https://github.com/nightscout/nightscout.github.io/issues/new).
```
## Create an Atlas database
a) Open a browser tab at: [https://www.mongodb.com/cloud/atlas/register](https://www.mongodb.com/cloud/atlas/register)
b) Enter your information, click `Continue` then `Create account`
MongoDB Atlas will send you an email, if you don't receive it check your Spam folder.
In the email you received from **MongoDB Atlas** (mongodb-atlas @ mongodb.com), click on `Verify email`
Another browser tab will open with your confirmed MongoDB account, `Continue`.
Enter some information (like below) and click `Finish`.
c) Select `Create a cluster in Shared Clusters (FREE)`
```{admonition} If you ever see this, just STOP
:class: danger
We're building a free cluster: you don't need to provide any billing information.
```
d) Check you selected `Shared`, leave all default values and click `Create Cluster`
e) Select `Username and Password` and invent a database username (for example `nightscout`) and a database password (for example `soo5ecret` but please make one that's yours!).
```{admonition} Database credentials
:class: warning
Do not use your Atlas **account** credentials.
Do not use special characters: only letters and numbers. No spaces.
```
Write down the password in the line below (yes, in this browser window you're reading now, unless you're reading a printed version). You’ll need it later.
| Database password (write here ->) |
| ------------------------------------------------------------ |
Then click `Create User`.
f) Select `My Local Environment` and in the box `My IP address` write `0.0.0.0/0` (mind these are all zeroes, not the letter O)
```{warning}
If you don't allow access from anywhere (IP 0.0.0.0/0) Nightscout will not be able to access your database."
```
Then click `Add Entry`.
g) Click on `Finish and Close`
h) Click on `Go to Databases`
i) Atlas will create your default cluster, it can take more than 3 minutes
j) Click on `CONNECT`
k) If displayed, click on `Choose a connection method` (else skip)
l) Select `Drivers`
m) Scroll down (do not change any value) and copy the connection string: click `Copy` and paste it somewhere to edit it (like Notepad).
n) Paste the string in the line below (yes, in this browser window you're reading now, unless you're reading a printed version).
(paste here ->)
```{hint}
It should be similar to this (`xxxxx` will be different):
`mongodb+srv://nightscout:@cluster0.xxxxx.mongodb.net/?retryWrites=true&w=majority`
```
o) (Optional) Invent a name for your database, this is not a critical information (for example `myCGMitc`). Only letters and numbers, no spaces.
| Database Name (write here ->) |
| ------------------------------------------------------------ |
p) Click on the button `Generate` (just here below this line: in this browser window you're reading):
The connection string will appear here
```{warning}
Keep this string safely aside, it is called your `MONGODB_URI`
```
p) If you want to do it manually: replace `` with your database password as noted previously (in the example below `soo5ecret`) and `` by any text you want, say `mycgmic` for example. The result will be like this:
`mongodb+srv://nightscout:soo5ecret@cluster0.xxxxx.mongodb.net/myCGMitc?retryWrites=true&w=majority`
```{hint}
**There should be NO `<` and NO `>` characters in the final string, neither for password nor for database name.**
```
You have completed a MongoDB Atlas database creation.
Now that you have **copied** the resulting `MONGODB_URI` string to a **safe place**, go back to the instructions page you were following.