ホーム » コンピュータ » Linux » homeassistant を watchtower で更新

homeassistant を watchtower で更新

先日 DHCP の設定で、Docker 環境が DHCPREQUEST を出しているかもとの勘違いで、homeassistant をアンインストールしていたけど、改めて homeassistant を運用再開。

HomeAssistant の運用再開

homeassistant のイメージダウンロードして、設定を最初から…と思ったけど、前回インストールしてあったものが残ってて、一発で環境が復活。

でも、homeassistant の更新方法を確認すると、docker image をダウンロード, stop, remove ,新しいイメージを run させるとかの手順が出てきて面倒。Gemini に聞いたら、Watchtower を勧めてくれた。

Watchtower で HomeAssistant の更新

Gemini に出てきた設定方法をそのまま実行。

$ sudo docker run -d \
  --name watchtower \
  --restart=unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower --interval 86400 homeassistant

$ sudo docker ps
CONTAINER ID IMAGE                                        COMMAND                  CREATED     STATUS                         PORTS    NAMES
e94a5eea7468 containrrr/watchtower                        "/watchtower --inter…" 4 seconds ago Up 1 second (health: starting) 8080/tcp watchtower
94c7a25097d4 ghcr.io/home-assistant/home-assistant:stable "/init"                6 minutes ago Up 6 minutes                            homeassistant

でも、現状のバージョンが 2025.9 だったので、最新の 2025.12 に早々に上げたいので、確認したら、以下のように、 –run-once を指定して実行すればいいらしい。

$ sudo docker run --rm \
        -v /var/run/docker.sock:/var/run/docker.sock \
        containrrr/watchtower \
        --run-once \
        homeassistant

エラーが出たので、Gemini の協力もあり、バージョン指定で更新。

$ sudo docker run --rm \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -e DOCKER_API_VERSION=1.44 \
        containrrr/watchtower \
        --run-once \
        homeassistant

無事に、2025.12.5 に更新ができた。

んん? –run-once で更新ができるのなら、watchtower を起動させっぱなしなのは、プロセス資源がもったいない。/etc/cron.monthly で “docker run … watchtower –run-once …” を実行した方がいいじゃん。docker stop/rm watchtower して cron 管理に移行させた。

Docker管理の Portainer のインストール

Docker 絡みで Gemini にお勧めを聞いたら、Web の GUI で管理ができる Portainer をすすめられた。
ということで、おすすめ設定を実行。

((( 設定データ保存用のボリューム作成 )))
$ sudo docker volume create portainer_data

((( Portainer コンテナの起動 )))
$ sudo docker run -d \
        -p 8000:8000 \ # HTTPポートの割り当て
        -p 9443:9443 \ # HTTPSポートの割り当て
        --name portainer \
        --restart=always \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -v portainer_data:/data \
        portainer/portainer-ce:latest