PostgreSQL のインストールはコマンド一つです。多くの人がつまずくのはリモートアクセスで、5432 番を世界に開け、パスワードを設定し、なぜログがログイン試行だらけなのかと首をかしげます。このガイドでは Ubuntu 24.04 に Postgres をインストールし、データベースを作成し、外部から接続する安全な方法を 2 つ紹介します。
1. インストール
apt update && apt install -y postgresql
systemctl status postgresql --no-pager
Ubuntu 24.04 では PostgreSQL 16 です。既定では localhost でのみ待ち受けます。理由がない限りそのままにしておきましょう。
2. ユーザーとデータベースを作成する
sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL
同じサーバー上のアプリは postgresql://app:PASSWORD@localhost:5432/appdb で接続します。
3. ノート PC から接続する:SSH トンネル(推奨)
開けるものも、サーバーで設定するものもありません。トンネルがローカルポートを SSH 経由で転送します。
ssh -N -L 5433:localhost:5432 root@203.0.113.10
NAT プランでは、パネルに表示される個人用 SSH ポートを追加します。
ssh -N -p 20123 -L 5433:localhost:5432 root@your-nat-host
トンネルが開いている間は、データベースクライアントを localhost:5433 に向けてください。SSH がすべてを暗号化し、5432 番はインターネットに対して閉じたままです。DBeaver や pgAdmin などの GUI ツールには、同じことをする「SSH トンネル」タブがあります。
4. 別のサーバーからの直接アクセス(許可リスト)
別の場所にあるアプリケーションサーバーが直接接続する必要があるなら、その IP だけを許可します。この場合、データベースサーバーは専用 IP 付きのプランである必要があります。NAT プランは SSH 以外の受信接続を受け付けないからです。
/etc/postgresql/16/main/postgresql.conf に次を設定します。
listen_addresses = '*'
/etc/postgresql/16/main/pg_hba.conf の末尾に追加します。
hostssl appdb app 198.51.100.20/32 scram-sha-256
そのアドレスだけにファイアウォールを開け、再起動します。
ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql
hostssl は暗号化された接続を必須にします。Ubuntu のパッケージには自己署名証明書が付属しているので、クライアントは sslmode=require で接続してください。
5. 最初の妥当な設定
RAM 2 GB のサーバーなら、postgresql.conf で次のようにします。
shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB
変更後に再起動します。ほとんどの小さなアプリにはこれで十分で、実際のクエリを見てから調整しましょう。
6. バックアップ
毎晩ダンプを取り、1 週間保持します。
mkdir -p /var/backups/pg && chown postgres /var/backups/pg
cat > /etc/cron.d/pg-backup <<'EOF'
30 3 * * * postgres pg_dump -Fc appdb > /var/backups/pg/appdb-$(date +\%u).dump
EOF
-Fc は圧縮されたダンプを作り、pg_restore で復元します。ダンプはサーバーの外にもコピーしてください。Managed Backups がマシン全体の日次復元ポイントを追加します。
コメント
まだコメントはありません。最初になりましょう。