Ubuntu 24.04 に Redis 7.0 をインストールして外部接続を許可する方法

Ubuntu 24.04 サーバーに Redis 7.0 をインストールし、管理者パスワードとアプリケーション専用ユーザーを作成したあと、自分の PC からだけ接続できるように外部接続の設定とファイアウォールまで設定します。

Ubuntu 24.04Redis 7.0x86_64約 14 分

検証済みのドキュメントです

クラウドサーバーを作成し、このドキュメントのコマンドを最初から最後までそのまま実行して確認したドキュメントです。

OS
Ubuntu 24.04.5 LTS · x86_64
インストールしたバージョン
Redis 7.0.15 (5:7.0.15-1ubuntu0.24.04.5)
テストサーバー
DigitalOcean · 1 vCPU / 1 GB RAM / 25 GB SSD (s-1vcpu-1gb, sgp1)
最終確認
2026-10-09

このドキュメントにはアフィリエイトリンクが含まれています。リンクから登録するとコードサンドが手数料を受け取ることがありますが、内容や評価には影響しません。

Ubuntu 24.04 サーバーに Redis 7.0 をインストールし、管理者パスワードとアプリケーション専用ユーザーを作成したあと、自分の PC からだけ接続できるように外部接続の設定とファイアウォールまで設定します。

1. 準備するもの

  • Ubuntu 24.04 LTS サーバー 1 台(メモリ 1GB 以上を推奨)
  • sudo 権限のあるアカウントで SSH 接続できること
  • 外部から接続する PC のグローバル IP アドレス(例: 203.0.113.10)

サーバーがない場合は、DigitalOcean の最小構成の Droplet(1 vCPU・1GB)を作成してみてください。この Droplet でも Redis 7.0 は十分にインストールできます。このドキュメントのすべての手順は、Droplet(1 vCPU・メモリ 1GB・25GB SSD・Ubuntu 24.04・シンガポール)でサーバーを作成して確認しました。

2. Redis のインストール

Ubuntu 24.04 の標準リポジトリには Redis 7.0 が含まれています。パッケージ一覧を更新してからインストールします。

sudo apt update
sudo apt install -y redis-server

インストールが終わったら、インストールされたバージョンを確認します。

redis-server --version
Redis server v=7.0.15 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=d064f9f48c901a92

3. サービスの状態確認

インストールが終わると redis-server サービスが自動で起動し、サーバーを再起動しても自動で実行されるように登録されます。

sudo systemctl status redis-server --no-pager
● redis-server.service - Advanced key-value store
     Loaded: loaded (/usr/lib/systemd/system/redis-server.service; enabled; preset: enabled)
     Active: active (running) since Fri 2026-10-09 11:31:08 UTC; 12s ago

Redis に接続できるか確認します。PONG が表示されれば正常です。

redis-cli ping
PONG

どのアドレスで接続を受け付けているか確認します。

sudo ss -tlnp | grep 6379
LISTEN 0      511        127.0.0.1:6379      0.0.0.0:*    users:(("redis-server",pid=2875,fd=6))
LISTEN 0      511            [::1]:6379         [::]:*    users:(("redis-server",pid=2875,fd=7))

127.0.0.1 と [::1] だけが表示されるので、今はサーバー上からしか接続できません。この動作は、設定ファイル /etc/redis/redis.conf の次の項目で決まります。

grep -n -E '^(bind|protected-mode|port|supervised|# requirepass)' /etc/redis/redis.conf
87:bind 127.0.0.1 -::1
111:protected-mode yes
138:port 6379
1036:# requirepass foobared
  • bind: 接続を受け付けるサーバーのアドレスです。127.0.0.1(IPv4)と ::1(IPv6)はどちらもサーバー自身のアドレスです。先頭の - は、そのアドレスが使えなくても Redis がエラーなしで起動するという意味です。
  • protected-mode: デフォルトユーザーにパスワードがないときに外部からの接続をブロックする機能です。
  • requirepass: パスワードの設定です。先頭に # が付いているため、パスワードなしで接続できる状態です。

4. 基本のセキュリティ設定 — 管理者パスワード

インストール直後の Redis は、パスワードなしですべてのコマンドを実行できます。外部接続を許可する前に、デフォルトユーザー(default)にパスワードを設定します。default ユーザーはすべてのコマンドを実行できるので、管理者パスワードとして使います。パスワードは必ず自分で決めた値に置き換えてください。

sudo sed -i 's/^# requirepass foobared/requirepass change-this-admin-password/' /etc/redis/redis.conf
sudo grep -n '^requirepass' /etc/redis/redis.conf
1036:requirepass change-this-admin-password

Redis を再起動したあと、パスワードなしで接続するとコマンドが拒否されます。

sudo systemctl restart redis-server
redis-cli ping
NOAUTH Authentication required.

--askpass オプションを付けると、パスワードの入力を受けてからコマンドを実行します。入力したパスワードは * で表示されます。

redis-cli --askpass ping
Please input password: **************************
PONG

5. 専用ユーザーの作成

アプリケーションでは、管理者パスワードではなく権限を絞った専用ユーザーで接続するほうが安全です。Redis 6 からサポートされている ACL で、ユーザー appuser を作成します。Redis には MySQL・PostgreSQL のようにデータベースを別に作るコマンドがないため、キー名の先頭部分(app:)でこのユーザーが使える範囲を決めます。

echo 'user appuser on >change-this-password ~app:* +@all -@dangerous' | sudo tee -a /etc/redis/redis.conf
sudo systemctl restart redis-server
user appuser on >change-this-password ~app:* +@all -@dangerous
  • on: ユーザーを使用できる状態にします。
  • >change-this-password: > の後ろの値がこのユーザーのパスワードです。
  • ~app:*: 名前が app: で始まるキーだけを読み書きできます。
  • +@all -@dangerous: すべてのコマンドを許可したうえで、FLUSHALL・CONFIG・KEYS・INFO のようにサーバー全体に影響するコマンドのグループ(@dangerous)を除外します。

ユーザーが作成されたか、管理者パスワードで確認します。

redis-cli --askpass ACL USERS
Please input password: **************************
1) "appuser"
2) "default"

--user オプションで appuser として接続し、app: で始まるキーを保存して読み出してみます。

redis-cli --user appuser --askpass SET app:hello world
Please input password: ********************
OK
redis-cli --user appuser --askpass GET app:hello
Please input password: ********************
"world"

許可していないキーとコマンドは拒否されます。次の 2 つのエラーが表示されれば、権限が意図どおりに適用されています。

redis-cli --user appuser --askpass SET other:hello world
Please input password: ********************
(error) NOPERM this user has no permissions to access one of the keys used as arguments
redis-cli --user appuser --askpass FLUSHALL
Please input password: ********************
(error) NOPERM this user has no permissions to run the 'flushall' command

6. 外部接続の許可

デフォルトの設定では localhost からの接続しか許可していません。外部からの接続を許可するには、bind を 0.0.0.0 に変更します。0.0.0.0 は、サーバーのすべての IPv4 アドレスで接続を受け付けるという意味です。

sudo sed -i 's/^bind 127.0.0.1 -::1/bind 0.0.0.0/' /etc/redis/redis.conf
grep -n -E '^(bind|protected-mode)' /etc/redis/redis.conf
87:bind 0.0.0.0
111:protected-mode yes

protected-mode yes はそのままにします。手順 4 でデフォルトユーザーにパスワードを設定したので、この設定を有効にしたままでも外部から接続できます。

Redis を再起動し、6379 番ポートが外部のアドレスでも開いたか確認します。0.0.0.0:6379 が表示されていれば正常です。

sudo systemctl restart redis-server
sudo ss -tlnp | grep 6379
LISTEN 0      511          0.0.0.0:6379      0.0.0.0:*    users:(("redis-server",pid=3922,fd=6))

7. ファイアウォール(ufw)の設定

Redis の設定とは別に、ファイアウォールでも自分の PC の IP だけが 6379 番ポートに接続できるように許可します。ファイアウォールを有効にする前に、必ず先に SSH を許可してください。SSH を許可せずにファイアウォールを有効にすると、サーバーへの接続が切れてしまいます。

sudo ufw allow OpenSSH
sudo ufw allow from 203.0.113.10 to any port 6379 proto tcp
sudo ufw --force enable
sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
6379/tcp                   ALLOW       203.0.113.10
OpenSSH (v6)               ALLOW       Anywhere (v6)

8. 自分の PC からの接続確認

PC に redis-cli がない場合は、Docker で Redis クライアントを実行して接続できます。203.0.113.20 はサーバーの IP に置き換えてください。--rm オプションを付けているので、コマンドが終わるとコンテナは自動で削除されます。-it は、パスワードを入力できるように端末を接続するオプションです。

docker run --rm -it redis:7.0-alpine redis-cli -h 203.0.113.20 --user appuser --askpass GET app:hello
Please input password: ********************
"world"

手順 5 で保存した値が表示されれば、外部接続は正常です。パスワードなしで接続するとコマンドが拒否されることも確認します。

docker run --rm -it redis:7.0-alpine redis-cli -h 203.0.113.20 PING
(error) NOAUTH Authentication required.

9. トラブルシューティング

Could not connect to Redis at 203.0.113.20:6379: Connection refused

Redis が外部のアドレスで接続を受け付けていないという意味です。bind を変更する前に外部から接続すると、このエラーが出ます。grep -n -E '^(bind|protected-mode)' /etc/redis/redis.conf で bind 0.0.0.0 になっているか、変更したあとに sudo systemctl restart redis-server を実行したかを確認してください。

NOAUTH Authentication required.

パスワードなしでコマンドを実行したという意味です。requirepass を設定したあとは、redis-cli --askpass(管理者)または redis-cli --user appuser --askpass(専用ユーザー)で接続してください。

AUTH failed: WRONGPASS invalid username-password pair or user is disabled.

ユーザー名かパスワードが間違っているという意味です。--user を付けないと、default ユーザー(管理者パスワード)で確認されます。appuser で接続するには、--user appuser を付けて appuser のパスワードを入力してください。

(error) NOPERM this user has no permissions to access one of the keys used as arguments

appuser に許可していないキーを使ったという意味です。このドキュメントでは、~app:* で app: で始まるキーだけを許可しています。ほかの名前のキーも許可するには、redis.conf の user appuser の行に ~ で始まるキーパターンを追加し、Redis を再起動してください。

(error) NOPERM this user has no permissions to run the 'flushall' command

-@dangerous で除外したコマンドを実行したという意味です。INFO を実行しても同じ形式のエラーが出ます。こうしたコマンドは、管理者パスワードで接続して実行してください。

10. 削除

Redis とデータをすべて削除するには、以下のコマンドを実行します。保存されたデータと設定ファイルまですべて削除されるため、必要なデータは先にバックアップしてください。apt autoremove は、Redis と一緒にインストールされたライブラリを削除します。

sudo apt purge -y redis-server redis-tools
sudo apt autoremove -y
sudo rm -rf /etc/redis /var/lib/redis /var/log/redis

ファイアウォールに追加した 6379 番ポートのルールも削除します。

sudo ufw delete allow from 203.0.113.10 to any port 6379 proto tcp
Rule deleted

Redis のパッケージが残っていないか確認します。0 が表示されれば、すべて削除されています。

dpkg -l | grep -c redis
0

実際に試してみる

サーバーがなければ、以下のサービスで数分あれば Ubuntu サーバーを作れます。 このドキュメントは DigitalOcean で検証しました。