Hide last authors
Richard Johnson 2.1 1 First, this doesn't work easily on a Raspberry Pi, which runs their own version of Linux.  (I'll be playing with that next.  The problem is you need MongoDB version 2.6 or later, and the Raspberry Pi version of Linux installs version 2.4.  Thus, you need to compile your own MongoDB version from source.  Fortunately, source is available, since it's open-source, but compiling your own usually involves also including/compiling/downloading a bunch of libraries, etc., so it can get involved.)  This is under Ubuntu Linux and I was running version 20.x.  Basically, you just follow the instructions here:
Richard Johnson 1.1 2
Richard Johnson 2.1 3 [[https:~~/~~/github.com/schmitzn/howto-nightscout-linux>>url:https://github.com/schmitzn/howto-nightscout-linux]]
Richard Johnson 1.1 4
Richard Johnson 12.1 5 except that where it mentions port 80, you **must** use port 443 ("https" means SSL encryption, so port 443).  You should be using Python3. You will also probably need to install "npm" in addition to the packages he mentions. You **must** use https to connect, which means you need a certificate.  Everything else seems pretty straight-forward and I have verified that it works, pulling numbers from Dexcom share, if you configure BRIDGE_USER_NAME, BRIDGE_PASSWORD, and "bridge" under the Enable options.  Everywhere pages mention changing the "Config Vars", this maps directly to the environment variables in the "start.sh" file.
Richard Johnson 2.1 6
7
8 Now, on to trying to install my own MongoDB on a Raspberry Pi Zero W...
9
Richard Johnson 4.1 10 * The reason MongoDB 2.4 is installed under Raspian, seems to be because later versions of MongoDB are 64 bit and Raspian is 32 bit.  You would need to install a 64 bit version of Linux, such as [[Ubuntu>>https://pimylifeup.com/ubuntu-server-raspberry-pi/]], onto your Raspberry Pi and then you can follow the instructions above.
Richard Johnson 5.1 11 ** You can't install a 64 bit Ubuntu onto a Raspberry PI Zero or Zero W, because it requires ARMv7 processor and the Zero series is based on ARMv6.
Richard Johnson 6.1 12 *** Probably the smallest choice would be Raspberry Pi Model 3 A+.
Richard Johnson 9.1 13
Richard Johnson 15.1 14 When installing "nodejs", make sure you're using a more recent version such as 16.x.x.  Run "node -v" to verify your node version.  If you're running an older version of Linux, you may have to manually override the installed version in order to get the version you need.  [[Here's a web page telling you how to do that.>>https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-16-04]] Following the instructions in the section "Option 2 — Installing Node.js with Apt Using a NodeSource PPA" worked for me and gave me version 16.17.0.
15
Richard Johnson 11.1 16 I finally ended up using a Raspberry Pi model 3 A+.  This is an ARMv7 processor, so it can do 64 bit Linux, it has built-in Wifi, and it's still small and cheap.  The system doesn't have a lot of memory, so I purchased a 32Gb micro-SD card and [[created a 16Gb swapfile>>https://linuxize.com/post/how-to-add-swap-space-on-ubuntu-18-04/]].  I installed Ubuntu 19 from here:
Richard Johnson 9.1 17
Richard Johnson 14.1 18 [[https:~~/~~/ubuntu.com/download/raspberry-pi>>https://ubuntu.com/download/raspberry-pi]]
Richard Johnson 9.1 19
20
21 You'll want to configure the Wifi using "netplan" (/etc/netplan directory):
22
Richard Johnson 10.1 23 (% class="box" %)
24 (((
Richard Johnson 9.1 25 network:
26 ethernets:
27 eth0:
28 dhcp4: true
29 optional: true
30 version: 2
31 wifis:
32 wlan0:
33 dhcp4: true
34 access-points:
35 "My Network Name":
36 password: "My Network Password"
Richard Johnson 10.1 37 )))
Richard Johnson 9.1 38
39 Then install the packages mentioned on the above web page as root, but install the "Nightscout" installation ("npm install") as a non-root user.
40
41 Finally, here's a sample "start.sh" file:
42
43
44 (% class="box" %)
45 (((
46 #!/usr/bin/bash
47
48 export SSL_KEY=MyCertKeyFile.key
49 export SSL_CERT=MyCertFullchainFile.cer
50 export SSL_CA=MyCertFullchainFile.cer
51
52 # environment variables
53 export DISPLAY_UNITS="mg/dl"
54 #export MONGO_CONNECTION="mongodb:~/~/MyNightscoutUsername:MyNightscoutPassword@localhost:27017/Nightscout"
55 export MONGO_CONNECTION="mongodb:~/~/localhost:27017/Nightscout"
56 export BASE_URL="https:~/~/nightscout.example.com"
57 export PORT=443
58 export API_SECRET="My Nightscout Secret"
59
60 export PUMP_FIELDS="reservoir battery status"
61 export DEVICESTATUS_ADVANCED=true
62 export ENABLE="careportal iob cob openaps pump bwg rawbg basal bridge"
63 export BRIDGE_PASSWORD="My Dexcom Share password"
64 export BRIDGE_USER_NAME="My Dexcom Share Username"
65
66 export TIME_FORMAT=24
67
68 # start server
69 node ~-~-no-deprecation server.js
70
71 )))
Richard Johnson 13.1 72
73 Note: The idea is that this can be used as a temporary Nightscout site, if we have no access to Internet.  Once we have access again, the MongoDB data stored on this temp. site can be pulled and uploaded to the main MongoDB Nightscount online.  (This merging can be done at any time, since it's just copying DB records over.  No big deal.)

Need help?

If you need help with XWiki you can contact: