![[サーバ構築編#5] Ubuntu初期設定-アプライアンスDB(PostgreSQL 13)との接続設定](/_next/image?url=%2Farticles%2Fserver%2Fubuntu-ethernets%2Fhero.jpg&w=3840&q=75)
サーバ構築編#5Ubuntu初期設定-アプライアンスDB(PostgreSQL 13)との接続設定
Webサーバのイーサネット設定を行いローカルスイッチとアプライアンスDBのPostgreSQL 13へのアクセスを可能に
初回公開日
最終更新日
サーバ構築編第5回ではWebサーバとローカルスイッチと接続してローカルネットワーク上のDBへアクセスできるようします。
サーバ構築編第3回までで作成、設定した下記の内容を利用しますので、事前に用意してください。
- 秘密鍵ファイルとパスフレーズ
- WebサーバのグローバルIP、ローカルIP
- 管理ユーザとパスワード
- sshのポート番号
- DBのローカルIP、デフォルトユーザ、デフォルトユーザのパスワード
1.ローカルスイッチとの接続
まずはSSHでサーバへ接続
bash
1ssh -p [ポート番号] -i "~/filename.pem" username@xxx.xxx.xxx.xxx
-p
でポートを指定、xxxx.xxxx.xxx.xxx
はサーバのグローバルIPです。インターフェースの状態を確認
とりあえず、現状を確認します。
bash
1ip link show
一部を伏せた状態でお見せるとこのような状態です。
bash
11: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
2 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
32: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
4 link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
5 altname enp0s3
6 altname ens3
73: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
8 link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
9 altname enp0s4
10 altname ens4
eth1
の行を見ると「state DOWN」にいます。ここがローカルネットワークで利用されるインターフェイスになります。
ちなみにlo
はループバック用のインターフェイスで、eth0
はインターネット用のインターフェイスになります。インターフェースの設定を編集
再起動後も設定を維持したいので netplan の設定を変更していきます。
/etc/netplan/01-netcfg.yaml
が該当ファイルです。環境によって、ファイル名が異なる場合がありますので/etc/netplan/
ディレクトリを参照してください。bash
1sudo vi /etc/netplan/01-netcfg.yaml
初期状態では
eth0
の設定があるだけと思います。
ここにeth1
についての設定を追記していきます。eth0
の設定も一部修正します。修正前の状態
bash : 01-netcfg.yaml
1network:
2 ethernets:
3 eth0:
4 addresses:
5 - xxx.xxx.xxx.xxx/24
6 dhcp4: 'no'
7 dhcp6: 'no'
8 gateway4: xxx.xxx.xxx.xxx
9 nameservers:
10 addresses:
11 - xxx.xxx.xxx.xxx
12 - xxx.xxx.xxx.xxx
13 search:
14 - localdomain
15 renderer: networkd
16 version: 2
修正後
diff : 01-netcfg.yaml
1network:
2 ethernets:
3 eth0:
4 addresses:
5 - xxx.xxx.xxx.xxx/24
6 dhcp4: 'no'
7 dhcp6: 'no'
8- gateway4: xxx.xxx.xxx.xxx #デフォルトゲートウェイの書き方修正
9+ routes: #デフォルトゲートウェイの書き方修正
10+ - to: default #デフォルトゲートウェイの書き方修正
11+ via: xxx.xxx.xxx.xxx #デフォルトゲートウェイの書き方修正
12 nameservers:
13 addresses:
14 - xxx.xxx.xxx.xxx
15 - xxx.xxx.xxx.xxx
16 search:
17 - localdomain
18+ eth1: # <- 追記:インターフェイス名
19+ dhcp4: no # <- 追記:固定IPなのでDHCPは使わない
20+ addresses: # <- 追記
21+ - 192.168.x.x/24 # <- 追記:ローカルネットワーク用の固定IP
22+ optional: true # <- 追記:別途説明
23 renderer: networkd
24 version: 2
gateway4
という書き方のままだと、この設定を適用させた時に、下記のようなwarningが出ます。bash
1** (generate:6414): WARNING **: **:**:**:**: `gateway4` has been deprecated, use default routes instead.
2See the 'Default routes' section of the documentation for more details.
gateway4
は非推奨になっており、新しい方法(default routes)を使え という警告。
動作はする可能性が高いが、今後のUbuntuのバージョンアップでエラーになる可能性がありそうなので、対応しておきます。○optional: true の意味
通常、netplan は設定したすべてのネットワークインターフェース (eth0, eth1 など) を 起動時に必ず検出しようとします。 もし eth1 が接続されていない場合(ケーブルが抜けている・デバイスが存在しないなど)、起動時に待機したり、エラーで止まったりすることがあります。 これを防ぐために optional: true を設定すると、
通常、netplan は設定したすべてのネットワークインターフェース (eth0, eth1 など) を 起動時に必ず検出しようとします。 もし eth1 が接続されていない場合(ケーブルが抜けている・デバイスが存在しないなど)、起動時に待機したり、エラーで止まったりすることがあります。 これを防ぐために optional: true を設定すると、
- そのインターフェースがなくても起動時にエラーにならない
- ネットワークが完全に初期化されるのを待たずにブートが進む(起動が速くなることもある)
eth0
の方はdhcp4: 'no'
とシングルクォートで括っていますが、追記した部分はシングルクォートで括っていませんが、同じ意味にはなります。一応、元々の記述されていた内容はいじりたくないのでそのままにしていますが、YAML では、ブール値(true/false)や数値は、クオートなしで書くのが原則というので、それにしたがっています。インターフェース設定ファイルのパーミッションを変更
/etc/netplan/01-netcfg.yaml
のデフォルトのパーミッションは644
です。このまま適用するとwarningが出ます。それを回避するため、パーミッションを600
に変更します。bash
1sudo chmod 600 /etc/netplan/01-netcfg.yaml
インターフェースの設定を反映
下記のコマンドで設定を反映させます。
bash
1sudo netplan apply
eth1 が有効になったか確認します。
bash
1ip a show eth1
bash
13: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP ・・
と
state UP
になったことが確認できます。
これで、ローカルスイッチへの接続が可能な状態になります。2.postgresql-client-13 のインストール
私の環境は「さくらのクラウド」のアプライアンスDBで「PostgreSQL 13」を利用しています。
アプライアンスDBへの接続は、SQLコマンドでしかできません。
なので、SQLコマンドを実行できるツール(psql) をインストールします。
psql クライアントのインストール
postgresql-client-13
は PostgreSQL 13 用のクライアントのみをインストールするパッケージです。Webサーバ側では DBサーバを持たず、アプライアンスDBに接続するだけなので、PostgreSQL の本体は不要です。Ubuntu 24.04 (noble) の標準リポジトリでは、
postgresql-client-16
が提供されており(2025年5月27日現在)、古い PostgreSQL 13 に対応したクライアント (postgresql-client-13) は含まれていません。標準リポジトリでどのバージョンのpostgresql-client
インストールされるのか調べる方法
bash
1apt update
2apt-cache policy postgresql-client
bash
1postgresql-client:
2 インストールされているバージョン: (なし)
3 候補: 16+257build1.1
4 バージョンテーブル:
5 16+257build1.1 500
6 500 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages
7 16+257build1 500
8 500 http://archive.ubuntu.com/ubuntu noble/main amd64 Packages
PostgreSQL 13に対応するクライアントツールは、PostgreSQL の公式リポジトリ (pgdg) を追加する必要があります。
PostgreSQL公式リポジトリのGPGキーをバイナリ形式で保存
PostgreSQL の公式リポジトリ (pgdg) を追加するために、GPGキー(デジタル署名)を登録 します。
GPGキーとは?
apt は、追加したリポジトリが本物であることを検証するために GPGキーを使います。
公式の pgdg リポジトリのパッケージが改ざんされていないことを確認するため、GPGキーを事前に登録する必要があります。
Ubuntu 24.04 では GPGキーの保存形式が変更された!
従来の apt-key は非推奨になり、**バイナリ形式 (.gpg) で保存しないと NO_PUBKEY エラーが発生するため、以下の方法で登録します。
bash
1sudo mkdir -p /etc/apt/keyrings
2curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/keyrings/postgresql.gpg
リポジトリ設定を追加
公式リポジトリ (pgdg) を /etc/apt/sources.list.d/ に追加します。
Ubuntu 24.04 (noble) では noble-pgdg に postgresql-client-13 が提供されていることを確認済みなので、以下の設定でインストール可能 です。
bash
1echo "deb [signed-by=/etc/apt/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt noble-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list > /dev/null
パッケージリストを更新
リポジトリを追加したら、パッケージリストを更新します。
bash
1sudo apt update
postgresql-client-13 のインストール
最後に postgresql-client-13 をインストールします。
bash
1sudo apt install -y postgresql-client-13
インストール完了後、バージョンを確認します。
bash
1psql --version
2pg_dump --version
psql (PostgreSQL) 13.x のように表示されれば成功です!
3.アプライアンスDBへの接続
SQLコマンドで接続
bash
1psql -h <DBのIPアドレス> -p <ポート番号> -U <ユーザー名> -d <データベース名>
「さくらのクラウド」のアプライアンスDBの場合、管理画面の[アプライアンス]-[データベース]-[作成したデータベース名]-[詳細]の「コマンド例」に接続コマンドがありますのでそれを利用してください。

例)
bash
1psql -h 192.168.x.x -p 5432 -U myuser -d mydatabase
/etc/hostsの設定
前段のようにIPアドレスで接続するのも良いのですが、今後の設定も含めて
/etc/hosts
で任意の名称でDB接続できるようにしておくと運用のとある段階でIPアドレスが変更になった時に、一箇所だけ変更すればいいと状態になります。方法は下記のように簡単です。bash
1sudo vi /etc/hosts
2
3192.168.xx.xx db-master.local
4192.168.xx.xx db-read.local
192.168.xx.xx
はDBのローカルIPです。将来のマスター&スレーブ構成のために変更しやすく上記のように記述しました。
/etc/hosts
ファイルは即時反映されますので、記載するとすぐに利用可能です。注意
[サーバ構築編#10]でPostfixのインストールと設定を行なっています。ここでわかったのですが、Postfixを運用する際に
[サーバ構築編#10]でPostfixのインストールと設定を行なっています。ここでわかったのですが、Postfixを運用する際に
/etc/hosts
の設定をそのまま利用できると思っていましたが、Postfixは/var/spool/postfix/etc/hosts
を参照するようです。なので、Postfixをインストール後に/etc/hosts
を編集した際は、忘れないようにsudo cp /etc/hosts /var/spool/postfix/etc/hosts
を実行するようにしないといけないです。下記のようにしてDBアクセスできるようになると思います。
例)
bash
1psql -h db-master.local -p 5432 -U myuser -d mydatabase
クライアントツールで接続
ローカルPCからクライアントツールで接続する場合は、「SSHトンネル」で接続可能なツールを利用してください。
私は「DBeaver」を利用しています。

「DBeaver」はmacOSで利用できる無料ツールで、とても便利です。
上図のように接続設定時に「SSH」タブにSSH接続情報を入力して、「一般タブ」でDBへの接続情報を入力すればDB接続できます。
「SSH」タブにSSH接続情報のときに、
Authentication Method
のところをPublic Key
にすると秘密鍵ファイルを設定できるようになります。SSHトンネルで接続
ローカルPCで開発する時にアプライアンスDBに接続する場合は、SSHトンネルをターミナルで実行して、作業したい場面もあると思います。
私の環境ですと、Next.jsで開発して、
Prismaクライアント
でDB接続して開発しています。その場合は、
zsh
1ssh -L 5433:192.168.x.x:5432 -N -f -i ~/.ssh/your_private_key -p 2222 user@your.server.com
2
3# /etc/hosts の設定をした場合
4ssh -L 5433:db-master.local:5432 -N -f -i ~/.ssh/your_private_key -p 2222 user@your.server.com
- -L 5433:192.168.x.x:5432 → ローカルの5433ポートをリモートの5432に転送(
192.168.x.x
はDBのローカルIP) - -N → コマンド実行せずポートフォワードのみ
- -f → SSHをバックグラウンドで実行
- -i ~/.ssh/your_private_key → SSHキーを指定(必要に応じて)
- -p 2222 → SSHポートの指定(必要に応じて)
上記のコマンド実行後に、下記でローカルからSSHトンネルできているから確認
zsh
1netstat -an | grep 5433
2
3#下記のように5433でリッスンできていればOK
4
5tcp4 0 0 127.0.0.1.5433 *.* LISTEN
6tcp6 0 0 ::1.5433 *.* LISTEN
ssh接続後に
prisma
なら.env
ファイルにDATABASE_URL="postgresql://your_db_user:your_db_password@127.0.0.1:5433/your_database_name"
とする。
これで、DBアプライアンスに接続して、開発を進めたりnpm run dev
で動作確認できます。以上で、アプライアンスDBへの接続は完了です。
続きはこちら...
前回の確認はこちら...
この記事の執筆・編集担当
DE
松本 孝太郎
DELOGs編集部/中年新米プログラマー
ここ数年はReact&MUIのフロントエンドエンジニアって感じでしたが、Next.jsを学んで少しずつできることが広がりつつあります。その実践記録をできるだけ共有していければと思っています。
▼ 関連記事
[サーバ構築編#2] さくらクラウドでPostgreSQLのアプライアンスDBを作る
運用が楽々なアプライアンス「データベース」でPostgreSQL環境を作成
2025/6/20公開
![[サーバ構築編#2] さくらクラウドでPostgreSQLのアプライアンスDBを作るのイメージ](/_next/image?url=%2Farticles%2Fserver%2Fsakura-cloud-db%2Fhero-thumbnail.jpg&w=1200&q=75)
[サーバ構築編#3] Ubuntu初期設定-ユーザ作成とSSH接続の強化
SSHでサーバへ接続して、Ubuntu Server 24.04.1LTSの主にユーザ作成とSSH接続の強化
2025/6/20公開
![[サーバ構築編#3] Ubuntu初期設定-ユーザ作成とSSH接続の強化のイメージ](/_next/image?url=%2Farticles%2Fserver%2Fubuntu-user-ssh%2Fhero-thumbnail.jpg&w=1200&q=75)
[サーバ構築編#4] Ubuntu初期設定-日本語化
Ubuntu Server 24.04.1LTSの言語設定の日本語化とシステム時間の日本時間ゾーン設定
2025/6/20公開
![[サーバ構築編#4] Ubuntu初期設定-日本語化のイメージ](/_next/image?url=%2Farticles%2Fserver%2Fubuntu-locale%2Fhero-thumbnail.jpg&w=1200&q=75)
[サーバ構築編#6] UbuntuへNginx1.28.0をインストール
Ubuntu 24.04.2 LTSへNginx1.28.0をインストールします。合わせて、SetGIDやACLを利用して運用しやすいディレクトリの権限設定を実施
2025/6/20公開
![[サーバ構築編#6] UbuntuへNginx1.28.0をインストールのイメージ](/_next/image?url=%2Farticles%2Fserver%2Fnginx%2Fhero-thumbnail.jpg&w=1200&q=75)
[サーバ構築編#1] さくらクラウドでUbuntuサーバのインスタンスを作る
コントロールパネルからサクッとUbuntuサーバのインスタンスを作成
2025/6/20公開
![[サーバ構築編#1] さくらクラウドでUbuntuサーバのインスタンスを作るのイメージ](/_next/image?url=%2Farticles%2Fserver%2Fsakura-cloud-server%2Fhero-thumbnail.jpg&w=1200&q=75)