目次
はじめに
QNAP NAS上でDockerを使ってCloudflare Tunnelを運用していると、コンテナのログにこんな警告が表示されることがあります。
WRN Your version 2025.4.2 is outdated. We recommend upgrading it to 2026.3.0
image: cloudflare/cloudflared:latestと書いていても、Dockerは一度プルしたイメージをキャッシュとして使い続けます。 そのためlatestタグを指定しているだけでは自動的に最新版にはなりません。
この記事では、SSHを使ってCloudflaredを最新バージョンにアップデートする手順を解説します。
この記事でわかること
- QNAPのSSHを一時的に有効にする方法
- SSHでDockerイメージを最新版にプルする方法
- Docker Composeでコンテナを再作成する方法
- 作業後にSSHを無効に戻す方法(セキュリティ対策)
環境
- QNAP NAS(本記事ではTS-464)
- ContainerStation(Docker Compose対応)
- Cloudflare Tunnel運用中
- SSH接続ソフト:TeraTerm
Step 1:QNAPのSSHを有効にする
セキュリティのポイント SSHは普段は無効にしておき、作業時だけ有効にして終わったら無効に戻すことを強くおすすめします。常時有効にしておくと不正アクセスのリスクが高まります。
- QNAPの管理画面にログイン
- コントロールパネル を開く
- 左メニューの ネットワークとファイルサービス をクリック
- Telnet / SSH をクリック
- 「SSH接続を許可する」 にチェックを入れる
- ポート番号はデフォルト
22のまま(セキュリティを高めたい場合は変更推奨) - 適用 をクリック
注意 Telnet接続は暗号化されないため、絶対に有効にしないでください。SSHのみを有効にします。

Step 2:TeraTermでSSH接続する
- TeraTermを起動
- ホスト欄にQNAPのIPアドレスを入力(例:
192.168.x.xx) - ポート番号:
22、サービス:SSHを選択 - OKをクリック
- ユーザー名:
admin(権限者の名前)、(NASで決めた)パスワードを入力してログイン


ログインに成功するとこのようなプロンプトが表示されます。
[admin@NASxxxxxx ~]$
Step 3:現在のCloudflaredバージョンを確認する
まず現在動いているコンテナを確認します。
docker ps | grep cloudflared

実行結果の例:
aaaaaaaaaaaa cloudflare/cloudflared:latest "cloudflared --no-au…" 7 months ago Up 4 days cloudflared
bbbbbbbbbbbb cloudflare/cloudflared:latest "cloudflared --no-au…" 7 months ago Up 4 days cloudflared_2tsuji
7 months agoとあるように、**7ヶ月前のイメージがそのまま使われています。**これがバージョンが古い原因です。
Step 4:最新イメージをプルする
以下のコマンドで最新イメージをダウンロードします。
docker pull cloudflare/cloudflared:latest
実行結果の例:
latest: Pulling from cloudflare/cloudflared
ce49d46500be: Pull complete
...
Status: Downloaded newer image for cloudflare/cloudflared:latest
Status: Downloaded newer imageと表示されれば新しいイメージの取得成功です。

Step 5:コンテナを再作成する
新しいイメージをダウンロードしただけでは、まだ古いコンテナが動いています。 コンテナを再作成して新しいイメージを適用します。
docker-compose.ymlの場所を確認する
まずdocker-compose.ymlがどこにあるか確認します。
find /share -name "docker-compose.yml" 2>/dev/null
実行結果の例:
/share/CACHEDEV4_DATA/docker/your_blog/docker-compose.yml
/share/CACHEDEV4_DATA/docker/your_blog2/docker-compose.yml
コンテナを再作成する
docker-compose.ymlがあるディレクトリに移動してコンテナを再作成します。
cd /share/CACHEDEV4_DATA/docker/your_blog
docker compose up -d --force-recreate cloudflared
実行結果の例:
[+] Running 1/1
✔ Container cloudflared Started 1.0s

複数サイトを運用している場合 サイトごとにdocker-compose.ymlが分かれている場合は、それぞれのディレクトリで同じ作業を繰り返します。
サービス名が異なる場合のトラブルシューティング
no such service: cloudflaredというエラーが出た場合は、docker-compose.yml内のサービス名が異なります。以下のコマンドでサービス名を確認してください。cat docker-compose.yml | grep -A2 "cloudflare"サービス名を確認したうえで、正しい名前で再実行します。
docker compose up -d --force-recreate cloudflared_your_blog2
Step 6:アップデートを確認する
以下のコマンドで新しいバージョンが適用されているか確認します。
docker logs cloudflared 2>&1 | grep -i "version\|outdated"
実行結果の例:
2026-03-22T14:55:36Z INF Version 2026.3.0

outdatedの警告が消えて最新バージョンが表示されれば完了です。
Step 7:SSHを無効に戻す(重要)
作業が終わったら必ずSSHを無効に戻します。
- コントロールパネル → ネットワークとファイルサービス → Telnet / SSH
- 「SSH接続を許可する」のチェックを外す
- 適用 をクリック

まとめ
今回実施したコマンドをまとめます。
# 1. 現在のコンテナ確認
docker ps | grep cloudflared
# 2. 最新イメージをプル
docker pull cloudflare/cloudflared:latest
# 3. コンテナを再作成(necosuke_blogの例)
cd /share/CACHEDEV4_DATA/docker/necosuke_blog
docker compose up -d --force-recreate cloudflared
# 4. バージョン確認
docker logs cloudflared 2>&1 | grep -i "version\|outdated"
latestタグを使っていても定期的にdocker pullしてコンテナを再作成することで常に最新バージョンを維持できます。
今回説明したのが、自分の環境ではなく依頼での環境のため伏せ字が多くなってしまいました。見に悪くてすみません。

