目次
🏗 はじめに
Milesight の Beaver IoT は Docker で簡単に動かせる強力な IoT管理プラットフォームですが、
そのまま起動するとデータがコンテナ内部に保存され、コンテナ削除時に全データが消えるという落とし穴があります。
この記事では、
- HTTPS(Let’s Encrypt)によるセキュア公開
- 永続ボリュームによるデータ保持
の両方を実現した手順をまとめます。
⚙️ 環境概要
項目 | 内容 |
---|---|
サーバOS | Ubuntu 22.04 |
公開ドメイン | example-iot.com (架空ドメイン) |
グローバルIP | 203.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 で構成すれば、
本番環境にも耐える安全で再現性の高い運用が可能になります。