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自体はなくても動作します。
