コミュニティソリューション

Docker ComposeでCasaOSにRedisを安全にインストールする

A 2023 CasaOS tutorial introduced Redis installation but did not cover current persistence, authentication, or safe network exposure.

CasaOSでRedisを実行する現在最も安全な方法は、永続データボリュームと明示的な認証・ネットワーク公開設定を備えたDockerコンテナとして実行することです。 2023年のフォーラムチュートリアルは古すぎるため、デプロイガイド全体としてそのまま使用すべきではありません。現在のRedisのデフォルト設定とセキュリティ要件は変化しています。

公式Redisイメージを使用し、ポート6379はLANまたはDockerネットワーク内に限定して公開し、/dataを永続化してください。また、アプリケーションデータを保存する前に、AOF/RDB永続化が必要かどうかを決めてください。

公式Redisイメージを使用する

現在のRedis Dockerガイドでは、公式のredis:<version>イメージと標準ポート6379について説明しています。

CasaOSでDocker Composeを使用する

services:
  redis:
    image: redis:8
    container_name: redis
    restart: unless-stopped
    command: ["redis-server", "--appendonly", "yes", "--requirepass", "CHANGE_ME"]
    volumes:
      - /DATA/AppData/redis/data:/data
    ports:
      - "127.0.0.1:6379:6379"

パスワードを変更し、別のホストからRedisへの直接アクセスが本当に必要な場合にのみ、バインドアドレスを調整してください。

/dataを永続化する

ホストボリュームがない場合、Redisのデータは破棄可能なコンテナレイヤー内に保存され、コンテナの再作成時に消失する可能性があります。/dataをCasaOSの永続ストレージにマッピングしてください。

永続化方式を意図的に選択する

AOFは書き込みを記録して復旧性を高めます。一方、RDBスナップショットはより軽量です。アプリケーションによっては、Redisを一時的なキャッシュとして使用することもできます。Redisの用途に合わせて永続化方式を選択してください。

Redisをインターネットに直接公開しない

ポート6379をパブリックに転送すべきではありません。同じDockerホスト上で別のアプリケーションを実行している場合は、両方のコンテナをプライベートDockerネットワークに接続し、サービス名で通信してください。

認証とACLを使用する

単一のrequirepassは家庭での利用には簡単ですが、現在のRedisは、よりきめ細かくユーザーやコマンドを管理できるACLにも対応しています。リモートから到達可能なRedisインスタンスを、認証なしで運用しないでください。

redis-cliからテストする

docker exec -it redis redis-cli -a CHANGE_ME ping

正常なサーバーはPONGを返します。

永続化したRedisデータをバックアップする

Redisに重要なデータを保存している場合は、書き込みを停止または調整し、選択したRDB/AOF方式に応じて永続ボリュームをバックアップしてください。コンテナの再起動がバックアップになると考えてはいけません。

Dockerデプロイガイドは、CasaOSのカスタムアプリにも同様に適用できます。

本番利用前にメモリ制限を確認する

Redisはメモリを中心に動作するソフトウェアです。キー数が少ないから使用量も少ないと考えず、実際のデータセットサイズとホストのRAMを確認してください。複数のサービスでCasaOSホストを共有する場合は、エビクション時にアプリケーションがどのように動作するかを理解したうえで、maxmemoryポリシーを意図的に設定することを検討してください。

アプリケーションの依存関係にはプライベートDockerネットワークを使用する

自動化プラットフォームやWebアプリなど、別のコンテナ専用にRedisを使用する場合は、両方のサービスを同じプライベートDockerネットワークに接続し、ホストポートの公開を完全に省略してください。アプリケーションはサービス名を使ってredis:6379に接続できます。

コンテナ再作成後に永続化を確認する

初期設定後、テスト用のキーを書き込み、同じボリュームを使用してコンテナを再作成し、そのキーが引き続き利用できることを確認してください。この簡単なテストにより、重要なアプリケーションが依存する前に、ホストパスが実際に永続化されていることを確認できます。

FAQ

Redisが使用するポートは何ですか?

デフォルトでは6379です。

6379をすべてのインターフェースにマッピングすべきですか?

いいえ。必要な場所にのみバインドし、できればlocalhostまたはプライベートなDocker/LAN経路に限定してください。

Redisのデータはどこに保存すべきですか?

コンテナの/dataディレクトリを、CasaOSの永続ストレージにマッピングしてください。

RedisInsightは必要ですか?

いいえ。RedisInsightはオプションの管理UIであり、Redis自体はなくても動作します。