yasuです。
最近、仕事関係で色々あって、Javaの学習を始めました。
Geminiに聞きまくりながら、わからないなりにコードを書いています。
で、そろそろDBアクセスのコードを書くのにPostgreSQLをインストールしたかったのですが、クライアントPCにデータベースエンジンをインストールするのは嫌だなと思い、せっかくならProxmox VEにLXCコンテナを立ててそこにPostgreSQLをインストールしてみることにしました。
目次(クリックで開閉)
テンプレートダウンロード
LXCコンテナを作成するにはテンプレートが必要ということで、ダウンロードしていきます。
Proxmoxの管理画面にアクセスしたら、ノードの下のディスク「nfs0」を選択して、[CTテンプレート]をクリックします。
Proxmoxのローカルディスクにダウンロードしたい場合は「local」を選択すれば大丈夫です。

テンプレート一覧ダイアログが表示されるので、導入したいテンプレートを選択して[ダウンロード]ボタンをクリックします。
ここでは「almalinux-10-default」を選択しています。

テンプレートのダウンロードが終わると「TASK OK」と表示されるので、ダイアログ右上のバツボタンをクリックしてダイアログを閉じます。

LXCコンテナ作成
Proxmox管理画面の右上にある[CTを作成]ボタンをクリックします。

LXCコンテナを作成するノード(サーバー)とID(CT ID)、ホスト名、パスワードを選択・入力して、[次へ]ボタンをクリックします。

LXCコンテナのテンプレートを選択します。
先程ダウンロードした「nfs0」に入っている「almalinux-10-default」を選択して、[次へ]ボタンをクリックします。

LXCコンテナを格納するストレージと仮想ディスクサイズを選択・設定して、[次へ]ボタンをクリックします。

LXCコンテナのCPUコア数を設定して、[次へ]ボタンをクリックします。

LXCコンテナのメモリとスワップサイズを設定して、[次へ]ボタンをクリックします。

LXCコンテナのネットワークの名前とブリッジ、IPアドレス(CIDR形式)とゲートウェイアドレスを選択・入力して、[次へ]ボタンをクリックします。

DNSドメイン名とDNSサーバーのIPアドレスを入力して、[次へ]ボタンをクリックします。

[作成後に起動]にチェックを付けて、[完了]ボタンをクリックします。
LXCコンテナの作成が始まります。

LXCコンテナの作成が完了したら「TASK OK」が表示されるので、ダイアログ右上のバツボタンをクリックします。

LXCコンテナ sshの設定
作成した直後のAlmaLinux10 LXCコンテナはSSH接続ができず不便なので、SSHサーバーの設定を行います。
Proxmox管理画面から作成したノードの下のLXCコンテナを選択し、[コンソール]をクリックします。

ログインユーザーは[root]、パスワードはコンテナ作成時に設定したパスワードを入力しログインします。

openssh-serverをインストールして、サービスを起動します。
# dnf install -y openssh-server

sshdを起動&自動起動するようにします。
# systemctl enable --now sshd

rootユーザーでsshログインを許可をする設定をします。
# sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

設定を反映するためにsshdを再起動します。
# systemctl restart sshd

Windows PCなどからLXCコンテナにsshで接続します。
C:\Users\yasu> ssh root@192.168.0.62
LXCコンテナ PostgreSQLインストール
ssh接続できたら、LXCコンテナにPostgreSQLをインストールします。
# dnf install -y postgresql-server postgresql-contrib
インストールが終わったら、データベースを初期化します。
# postgresql-setup --initdb
PostgreSQLを起動と自動起動するように設定します。
# systemctl enable --now postgresql
他のPCからPostgreSQLにアクセスできるように設定ファイルを2つ変更します。
# vi /var/lib/pgsql/data/postgresql.conf
--------------
#listen_addresses = 'localhost'
↓
listen_addresses = '*' ←コメントを解除して、値をlocalhostから*に変更
# vi /var/lib/pgsql/data/pg_hba.conf
--------------
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
↓
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
host all all 192.168.0.0/24 scram-sha-256 ←追記
# IPv6 local connections:
host all all ::1/128 ident
PostgreSQLを再起動して、変更した設定ファイルを反映させます。
# systemctl restart postgresql
PostgreSQL テスト用データベースとユーザー 作成
PostgreSQLにテスト用データベース「test_db」とユーザー「test_user」を作成していきます。
# su - postgres
$ psql
postgres=# create user test_user with password 'パスワード';
postgres=# create database test_db owner test_user;
postgres=# \q
$ exit
最後に
Proxmoxを使い始めて数年経ちますが、始めてLXCコンテナを作成してみました。
意外と簡単でしたので、ちょっとした環境を作りたい、でもローカルのPCの環境は汚したくないっていうときに、LXCコンテナは便利ですね。