Beaver IoTをHTTPS化&データ永続化して運用する方法(Docker構成)

🏗 はじめに

Milesight の Beaver IoT は Docker で簡単に動かせる強力な IoT管理プラットフォームですが、
そのまま起動するとデータがコンテナ内部に保存され、コンテナ削除時に全データが消えるという落とし穴があります。

この記事では、

  • HTTPS(Let’s Encrypt)によるセキュア公開
  • 永続ボリュームによるデータ保持
    の両方を実現した手順をまとめます。

⚙️ 環境概要

項目内容
サーバOSUbuntu 22.04
公開ドメインexample-iot.com(架空ドメイン)
グローバルIP203.0.113.10(RFC5737で定義されたドキュメント用アドレス)
アプリBeaver IoT (milesight/beaver-iot:latest)
Webサーバnginx + certbot
ポート構成nginx(80/443) → Beaver IoT(8080)

🧩 手順まとめ

① Dockerコンテナを停止・削除

古いコンテナがあれば停止&削除します。

docker stop beaver-iot
docker rm beaver-iot


② 永続化ディレクトリを準備

Beaver IoT のデータやログをホスト側に保存します。

sudo mkdir -p /srv/beaver-iot/data
sudo mkdir -p /srv/beaver-iot/logs
sudo chown -R 1000:1000 /srv/beaver-iot


③ コンテナを再起動(永続化付き)

docker run -d \
  --name beaver-iot \
  -p 8080:80 \
  -p 1883:1883 \
  -v /srv/beaver-iot/data:/root/beaver-iot/data \
  -v /srv/beaver-iot/logs:/root/beaver-iot/logs \
  milesight/beaver-iot:latest

  • /srv/beaver-iot/data → 設定やDBを保持
  • /srv/beaver-iot/logs → ログを保持

④ nginx の導入と設定

sudo apt install nginx -y

設定ファイル作成:

sudo nano /etc/nginx/sites-available/example-iot.com

内容:

server {
    listen 80;
    server_name example-iot.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example-iot.com;

    ssl_certificate /etc/letsencrypt/live/example-iot.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example-iot.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8080/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

有効化してリロード:

sudo ln -s /etc/nginx/sites-available/example-iot.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl enable nginx
sudo systemctl start nginx


⑤ Let’s Encrypt で HTTPS 化

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example-iot.com

  • 証明書: /etc/letsencrypt/live/example-iot.com/
  • 期限:90日(自動更新設定済)

更新確認:

sudo certbot renew --dry-run


⑥ 動作確認

ブラウザでアクセス:

https://example-iot.com/dashboard

✅ 鍵マーク(🔒)が表示されれば HTTPS 化成功。
✅ Beaver IoT の初期画面が表示されれば新規構築完了。


🔁 データが消えない再起動方法

Beaver IoT を再起動したいときは以下のコマンドだけでOK。

docker stop beaver-iot
docker start beaver-iot

もしサーバ再起動後も自動で立ち上げたい場合は:

docker update --restart=always beaver-iot


🧱 データバックアップ

バックアップ例(1日1回 /srv/beaver-iot 配下をtarで保存):

tar czf /backup/beaver-iot_$(date +%F).tar.gz /srv/beaver-iot

cronに登録して自動化するのもおすすめ。


🧩 トラブル防止メモ

状況対処
nginx が起動できないdocker ps で 80番ポートを使っているコンテナを確認
certbot が失敗する80番を nginx に空ける
データが消えた-v オプションで永続化ボリュームを忘れていないか確認
HTTPS期限切れsudo certbot renew --dry-run で自動更新を確認

✅ まとめ

目的コマンド要点
初回構築docker run -v /srv/beaver-iot/...
HTTPS設定sudo certbot --nginx -d example-iot.com
データ保持/srv/beaver-iot/data 永続化
自動更新確認certbot renew --dry-run

Beaver IoT を Docker + nginx + Let’s Encrypt で構成すれば、
本番環境にも耐える安全で再現性の高い運用が可能になります。