今は自宅サーバとしてraspberry-pi4ででアマチュア無線用のaprsサーバとNightscouサーバを、立ち上げているんですが、試しにraspberry-pi3とほぼ同じ性能で、価格は1/3のRaspberry-pi Zero 2WでNightscoutサーバを上げてみました。

Nightscoutは、糖尿病のCGM管理用のサーバでかなり高機能です。以前は無料のクラウドで使えていたみたいですが、今はサブスクで料金が発生します。

それでお金のない私は、自宅でRaspberry-piで立ち上げています。それをRaspberry-pi Zero 2Wで専用で上げてみました。24時間電源を入れるので消費電力も少ないし最適です。

CGM機器としてはリブレ2を使っています。これは500円玉大のパッチを腕に張り付けて、常時血糖値を取得してスマホアプリでその値を表示するというものです。その値をNightscoutサーバにupしてwebサーバ上で管理できます。

Nighscoutは、dockerで動作しますが、果たしてメモリーが512kbしかないZero 2Wでdockerがどの程度動くのか、、、

結論からいうとまったく問題なく動きました。NigscoutサーバとしてもレスポンスもPI4で上げているのとまったく差がありません。
とはいえさすがにメモリー容量が512kbではきびしく、ヘッドレス運用でもawap領域を1G以上取ったほうがいいです。 

DOCKERを使うので、OSはPI OS Lite (64Bit)を選択してSDカードにインストールしました。
ヘッドレス運用なんでguiは必要ないです。512KBのメモリーでは、さすがにデスクトップ環境で使うのはきびしいと思います。
またデフォルトのswap容量だと、500Mしかないんで、ssh接続でapt updateなんかすると、接続が不安定になり切断されることがあります。私は

sudo nano /etc/dphys-swapfile

CONF_SWAPSIZE=2048 

で2Gに拡張しました。

あとwifiで接続してるんですが、dhcpではなく固定ipに変更します。
64bitのBOOKWORMでは、固定IPに設定は面倒ですが、

sudo nmtui

で簡単に設定できます。

まず前回お世話になったドイツ語のサイトでインストールします。

dockerのインストールは

curl https://get.docker.com/ | sh

このコマンドだけです。少し時間はかかりますが、ものすごく簡単にインストールできます。

dockerにユーザを追加します。

sudo usermod -aG docker $USER &&
sudo reboot

再起動後 dockerのディレクトリとmongodbの入れ物を作ります。

cd /home/$USER/ &&
mkdir nightscout &&
cd nightscout &&
mkdir db
docker-compose.yamlを作成します。


cd /home/$USER/nightscout &&
nano docker-compose.yaml

私のdocker-compose.yamlです。

services:
    nightscout:
      image: markxoe/nightscout-cgm-remote-monitor-raspberrypi:latest
      environment:
        TZ: Japan/Tokyo
        MONGO_CONNECTION: mongodb://mongo:27017/nightscout
        API_SECRET: xxxxxxxxxxxx
        BG_HIGH: 250
       BG_LOW: 70
       BG_TARGET_TOP: 180
       BG_TARGET_BOTTOM: 80
       INSECURE_USE_HTTP: true
       #AUTH_DEFAULT_ROLES: denied
       ENABLE: delta direction rawbg iob dbsize careportal
     ports:
       - 1337:1337
     links:
       - mongo
     restart: always
   mongo:
     image: mongo:bionic
     restart: always
     volumes:
       - ./db:/data/db

これを保存後 dockerのイメージをダウンロードします。

docker compose pull

5分ぐらいかかります。

Nigscoutサーバを起動します。

 docker compose up -d

正常に起動したら、http://ローカルip/:1337で接続できるはずです。

あと mongodb-database-toolsをいれておけばdbのバックアップやリストアが簡単にできるようになるので入れておいてください。

Ubuntu 24.04 ARM 64です。このdebパッケージを

sudo dpkg -i ファイル名
 
でインストールします。

mongodbのバックアップは

docker ps -a でidを調べます。

バックアップは
docker exec CONTAINER_NAME mongodump --archive > db.dump

圧縮バックアップは
docker exec CONTAINER_NAME mongodump --archive --gzip > db.dump.gz

リストアは
docker exec -i CONTAINER_NAME mongorestore --archive < db.dump

docker exec -i CONTAINER_NAME mongorestore --archive --gzip < db.dump.gz

下記のスクリプトを用意して

#!/bin/sh

docker exec CONTAINER_NAME mongodump --archive > 'date +%y%m%d'.dump

これをcrontabで一週間に一度ぐらい実行すると、yymmdd.dumpが作成されます。


IMG_20250114_082434


家のwifiに接続したスマホ(xdrip)からNightscoutに、uploadした血糖値のCGMの値をリルタイムで表示しています。
流れとしては リブレ2--->リブレview--->スマホ(xdrip)--->  Nightscou---->esp32のcherp yerrow displayです。
スマホを除く費用は、zero2wを含めて全部で5000円以内でできます。

aprsはguiが使えなのでaprxを使いました。また別記事で書きます。