はじめに
最近プリザンターを複数回立てたりすることが多く、毎回初期設定するのも大変なので、
Ubuntu 24.04にプリザンターの環境(.NET 8.0 + PostgreSQL 17 + Pleasanter)を半自動でセットアップするスクリプトを作成して動かしてみました。
前提条件
- Ubuntu 24.04が起動済み
- Ubuntuにsudo権限を持つユーザーでログイン可能
環境
- ホストOS: Windows 11
- ゲストOS: Ubuntu 24.04(VirtualBox上)
- データベース: PostgreSQL 17
全体コード
スクリプト全体を表示(クリックで開く)
#!/bin/bash
# Ubuntu PostgreSQL 17 自動セットアップスクリプト
# VirtualBox上のUbuntu 24.04向け
set -euo pipefail
# --- 設定 (必要に応じてここを書き換えてください) ---
POSTGRES_OS_USER_PASSWORD="********" # OSユーザー postgres のパスワード
POSTGRES_DB_PASSWORD="********" # PostgreSQL管理ユーザー postgres のパスワード
PLEASANTER_RUN_USER="hayato" # Pleasanterを起動するユーザー名
ALLOW_REMOTE="yes" # yes または no
ALLOWED_CIDR="192.168.1.0/24" # リモート接続を許可する CIDR
LOG_DIR="/var/log/pleasanter_setup" # ログ出力ディレクトリ
# -----------------------------------------------
if [ "$EUID" -ne 0 ]; then
echo "このスクリプトは root で実行してください。sudo を使用してください。" >&2
exit 1
fi
# ログディレクトリとファイルの設定
mkdir -p "$LOG_DIR"
LOG_FILE="${LOG_DIR}/setup_$(date +%Y%m%d_%H%M%S).log"
# ログ出力関数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')]" "$@" | tee -a "$LOG_FILE"
}
# 標準出力とエラー出力をログファイルにも出力
exec > >(tee -a "$LOG_FILE") 2>&1
log "ログファイル: $LOG_FILE"
log "=========================================="
log "Ubuntu PostgreSQL 17 自動セットアップ開始"
log "=========================================="
# 1. .NET 8.0 のインストール
log ""
log "[1/9] .NET 8.0 のインストール..."
DOTNET_INSTALL_SCRIPT="/tmp/dotnet-install.sh"
if command -v dotnet >/dev/null 2>&1; then
DOTNET_VERSION=$(dotnet --version 2>/dev/null || echo "unknown")
log "✓ .NET は既にインストールされています (version: ${DOTNET_VERSION})"
else
log " .NET インストールスクリプトをダウンロード中..."
wget -q https://dot.net/v1/dotnet-install.sh -O "$DOTNET_INSTALL_SCRIPT"
chmod +x "$DOTNET_INSTALL_SCRIPT"
log " .NET 8.0 をインストール中..."
"$DOTNET_INSTALL_SCRIPT" -c 8.0 -i /usr/local/bin
# PATHに追加(現在のセッション用)
export PATH="/usr/local/bin:$PATH"
if command -v dotnet >/dev/null 2>&1; then
DOTNET_VERSION=$(dotnet --version)
log "✓ .NET ${DOTNET_VERSION} インストール完了"
else
log "警告: .NET のインストールに問題がある可能性があります"
fi
fi
# 2. PostgreSQL 17 のインストール
log ""
log "[2/9] PostgreSQL 17 のインストール..."
log " apt パッケージリストを更新中..."
# ミラー同期エラーが発生しても続行(古いインデックスが使用されます)
apt-get update -qq || log " 警告: apt-get update で一部エラーが発生しましたが続行します"
log " curl と ca-certificates をインストール中..."
apt-get install -y curl ca-certificates
log " PostgreSQL 公式リポジトリを追加中..."
install -d /usr/share/postgresql-common/pgdg
curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list
log " PostgreSQL リポジトリを更新中..."
# ミラー同期エラーが発生しても続行
apt-get update -qq || log " 警告: apt-get update で一部エラーが発生しましたが続行します"
log " PostgreSQL 17 をインストール中(数分かかる場合があります)..."
apt-get install -y postgresql-17
log "✓ PostgreSQL 17 インストール完了"
# 3. OS ユーザー postgres のパスワード設定
log ""
log "[3/9] OS ユーザー postgres のパスワード設定..."
echo "postgres:${POSTGRES_OS_USER_PASSWORD}" | chpasswd
log "✓ OS ユーザー postgres のパスワード設定完了"
# 4. PostgreSQL DB ユーザー postgres のパスワード設定
log ""
log "[4/9] PostgreSQL 管理ユーザー postgres のパスワード設定..."
sudo -u postgres psql -c "ALTER ROLE postgres WITH PASSWORD '${POSTGRES_DB_PASSWORD}';"
log "✓ PostgreSQL 管理ユーザー postgres のパスワード設定完了"
# 5. ログ出力設定
log ""
log "[5/9] PostgreSQL ログ出力設定..."
PG_CONF="/etc/postgresql/17/main/postgresql.conf"
if [ -f "$PG_CONF" ]; then
# バックアップを作成
cp "$PG_CONF" "${PG_CONF}.backup.$(date +%Y%m%d%H%M%S)"
# ログ設定を変更
sed -i "s/^#log_destination = 'stderr'/log_destination = 'stderr'/" "$PG_CONF"
sed -i "s/^log_destination = 'syslog'/log_destination = 'stderr'/" "$PG_CONF"
sed -i "s/^#logging_collector = off/logging_collector = on/" "$PG_CONF"
sed -i "s/^logging_collector = off/logging_collector = on/" "$PG_CONF"
sed -i "s/^#log_line_prefix = '%m \[%p\] %q%u@%d '/log_line_prefix = '[%t]%u %d %p[%l]'/" "$PG_CONF"
log "✓ ログ出力設定完了"
else
log "警告: postgresql.conf が見つかりません: $PG_CONF"
fi
# 6. リモートアクセス設定
if [ "${ALLOW_REMOTE}" = "yes" ]; then
log ""
log "[6/9] リモートアクセス設定..."
# listen_addresses と port の設定
sed -i "s/^#listen_addresses = 'localhost'/listen_addresses = '*'/" "$PG_CONF"
sed -i "s/^listen_addresses = 'localhost'/listen_addresses = '*'/" "$PG_CONF"
sed -i "s/^#port = 5432/port = 5432/" "$PG_CONF"
# pg_hba.conf にアクセス許可を追加
PG_HBA="/etc/postgresql/17/main/pg_hba.conf"
if [ -f "$PG_HBA" ]; then
cp "$PG_HBA" "${PG_HBA}.backup.$(date +%Y%m%d%H%M%S)"
# 既に同じ設定がなければ追加
if ! grep -q "host.*all.*all.*${ALLOWED_CIDR}" "$PG_HBA"; then
echo "host all all ${ALLOWED_CIDR} scram-sha-256" >> "$PG_HBA"
log "✓ pg_hba.conf に ${ALLOWED_CIDR} からのアクセスを許可"
fi
fi
log "✓ リモートアクセス設定完了"
else
log ""
log "[6/9] リモートアクセス無効(スキップ)"
fi
# 7. サービスの再起動と自動起動有効化
log ""
log "[7/9] PostgreSQL サービス再起動と自動起動有効化..."
systemctl restart postgresql
systemctl enable postgresql >/dev/null 2>&1
log "✓ サービス再起動と自動起動有効化完了"
# 8. Pleasanter インストーラのインストール
log ""
log "[8/9] Pleasanter インストーラのインストール..."
log " dotnet tool をインストール中..."
dotnet tool install -g Implem.PleasanterSetup
log " PATH 設定を .bashrc に追加中..."
echo 'export PATH="$PATH:~/.dotnet/tools"' >> ~/.bashrc
echo 'export DOTNET_ROOT=/usr/local/bin' >> ~/.bashrc
echo 'export PATH=$PATH:$DOTNET_ROOT' >> ~/.bashrc
# 現在のセッション用にPATHを追加
export PATH="$PATH:$HOME/.dotnet/tools"
export DOTNET_ROOT=/usr/local/bin
log "✓ Pleasanter インストーラのインストール完了"
# 9. Pleasanter セットアップの実行
log ""
log "[9/9] Pleasanter セットアップの実行..."
log " pleasanter-setup を実行中..."
log " (対話形式で設定を入力してください)"
log ""
pleasanter-setup
log ""
log "✓ Pleasanter セットアップ完了"
# 10. Pleasanter の起動
log ""
log "Pleasanter を起動しています..."
PLEASANTER_DIR="/web/pleasanter/Implem.Pleasanter"
if [ -d "$PLEASANTER_DIR" ]; then
cd "$PLEASANTER_DIR"
log " ディレクトリ: $PLEASANTER_DIR"
log " 実行ユーザー: ${PLEASANTER_RUN_USER}"
log " Pleasanter を起動しています..."
log " (Ctrl+C で停止できます)"
log ""
sudo -u "${PLEASANTER_RUN_USER}" /usr/local/bin/dotnet Implem.Pleasanter.dll
else
log "警告: Pleasanter ディレクトリが見つかりません: $PLEASANTER_DIR"
log "pleasanter-setup が正常に完了したか確認してください。"
fi
log ""
log "=========================================="
log "Pleasanter セットアップ完了!"
log "=========================================="
log ""
log "【設定情報】"
log " - .NET version: $(dotnet --version 2>/dev/null || echo 'not installed')"
log " - OS ユーザー postgres のパスワード: ${POSTGRES_OS_USER_PASSWORD}"
log " - PostgreSQL 管理ユーザー postgres のパスワード: ${POSTGRES_DB_PASSWORD}"
if [ "${ALLOW_REMOTE}" = "yes" ]; then
log " - リモートアクセス: 有効(許可CIDR: ${ALLOWED_CIDR})"
else
log " - リモートアクセス: 無効"
fi
log ""
log "【接続確認コマンド例】"
log " ローカル接続: sudo -u postgres psql -U postgres"
if [ "${ALLOW_REMOTE}" = "yes" ]; then
log " リモート接続: psql -h <IPアドレス> -U postgres"
fi
log ""
log "【ログファイル】"
log " 詳細なログ: ${LOG_FILE}"
log ""
log "重要: 本番環境ではパスワードを変更し、適切なアクセス制限を設定してください。"
実行結果
スクリプトを実行すると、以下のように9つのステップが順次実行されます。
==========================================
Ubuntu PostgreSQL 17 自動セットアップ開始
==========================================
[1/9] .NET 8.0 のインストール...
(.NETインストール時のログ)
✓ .NET 8.0.xxx インストール完了
[2/9] PostgreSQL 17 のインストール...
(PostgreSQLインストール時のログ)
✓ PostgreSQL 17 インストール完了
[3/9] OS ユーザー postgres のパスワード設定...
✓ OS ユーザー postgres のパスワード設定完了
[4/9] PostgreSQL 管理ユーザー postgres のパスワード設定...
✓ PostgreSQL 管理ユーザー postgres のパスワード設定完了
[5/9] PostgreSQL ログ出力設定...
✓ ログ出力設定完了
[6/9] リモートアクセス設定...
✓ リモートアクセス設定完了
[7/9] PostgreSQL サービス再起動と自動起動有効化...
✓ サービス再起動と自動起動有効化完了
[8/9] Pleasanter インストーラのインストール...
✓ Pleasanter インストーラのインストール完了
[9/9] Pleasanter セットアップの実行...
(対話形式で設定を入力)
✓ Pleasanter セットアップ完了
Pleasanter を起動しています...
(Ctrl+C で停止できます)
==========================================
Pleasanter セットアップ完了!
==========================================
セットアップ完了後の状態:
- .NET 8.0がインストール済み
- PostgreSQL 17が起動中(自動起動有効)
- リモートアクセスが設定済み(設定による)
- Pleasanterがインストールされ起動
- ブラウザから
http://<IPアドレス>:5000でアクセス可能
手順
ステップ1: 全体コードをコピー
「全体コード」のスクリプトをコピーしてください。
ステップ2: Ubuntu上でスクリプトを作成
viエディタでスクリプトを作成します。
# Ubuntuにログイン後、以下を実行
sudo vi /tmp/setup.sh
viエディタの使い方:
-
挿入モードに入る
-
iキーを押す - 画面下部に
-- INSERT --と表示される
-
-
スクリプトを貼り付け
- コピーしたスクリプト全体をペースト(
Ctrl+Shift+Vまたは右クリックから貼り付け) - スクリプト全体が表示されることを確認
- コピーしたスクリプト全体をペースト(
-
編集モードに戻る
-
Escキーを押す -
-- INSERT --表示が消える
-
-
保存して終了
-
:wqと入力してEnterキーを押す - (保存せずに終了する場合は
:q!)
-
ステップ3: スクリプトを実行
スクリプト作成後、以下のコマンドで実行します。
# 実行権限を付与
sudo chmod +x /tmp/setup.sh
# スクリプトを実行(rootまたはsudo必須)
sudo /tmp/setup.sh
実行すると、実行結果で示したような出力が表示されます。
プリザンター起動確認
http://localhost:5000 でアクセスしてプリザンターが起動している。

コード説明
以下、各ステップのコードと詳細な説明を示します。
0. 初期設定
設定に必要な値で書き換えてください
set -euo pipefail
# --- 設定 (必要に応じてここを書き換えてください) ---
POSTGRES_OS_USER_PASSWORD="*******" # OSユーザー postgres のパスワード
POSTGRES_DB_PASSWORD="********" # PostgreSQL管理ユーザー postgres のパスワード
PLEASANTER_RUN_USER="hayato" # Pleasanterを起動するユーザー名
ALLOW_REMOTE="yes" # yes または no
ALLOWED_CIDR="192.168.1.0/24" # リモート接続を許可する CIDR
LOG_DIR="/var/log/pleasanter_setup" # ログ出力ディレクトリ
# -----------------------------------------------
if [ "$EUID" -ne 0 ]; then
echo "このスクリプトは root で実行してください。sudo を使用してください。" >&2
exit 1
fi
# ログディレクトリとファイルの設定
mkdir -p "$LOG_DIR"
LOG_FILE="${LOG_DIR}/setup_$(date +%Y%m%d_%H%M%S).log"
# ログ出力関数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')]" "$@" | tee -a "$LOG_FILE"
}
# 標準出力とエラー出力をログファイルにも出力
exec > >(tee -a "$LOG_FILE") 2>&1
log "ログファイル: $LOG_FILE"
主な設定項目
| 項目 | 説明 | デフォルト値 |
|---|---|---|
POSTGRES_OS_USER_PASSWORD |
OSユーザー postgres のパスワード | ******** |
POSTGRES_DB_PASSWORD |
PostgreSQL管理ユーザー postgres のパスワード | ******** |
PLEASANTER_RUN_USER |
Pleasanterを起動するユーザー名 | pleasanter |
ALLOW_REMOTE |
リモートアクセスを許可するか | yes |
ALLOWED_CIDR |
リモート接続を許可するIPアドレス範囲(CIDR形式) | 192.168.1.0/24 |
LOG_DIR |
ログ出力ディレクトリ | /var/log/pleasanter_setup |
1. .NET 8.0のインストール
プリザンター実行に必要な.NET 8.0をインストールします。
# 1. .NET 8.0 のインストール
log "[1/9] .NET 8.0 のインストール..."
DOTNET_INSTALL_SCRIPT="/tmp/dotnet-install.sh"
if command -v dotnet >/dev/null 2>&1; then
DOTNET_VERSION=$(dotnet --version 2>/dev/null || echo "unknown")
log "✓ .NET は既にインストールされています (version: ${DOTNET_VERSION})"
else
log " .NET インストールスクリプトをダウンロード中..."
wget -q https://dot.net/v1/dotnet-install.sh -O "$DOTNET_INSTALL_SCRIPT"
chmod +x "$DOTNET_INSTALL_SCRIPT"
log " .NET 8.0 をインストール中..."
"$DOTNET_INSTALL_SCRIPT" -c 8.0 -i /usr/local/bin
export PATH="/usr/local/bin:$PATH"
if command -v dotnet >/dev/null 2>&1; then
DOTNET_VERSION=$(dotnet --version)
log "✓ .NET ${DOTNET_VERSION} インストール完了"
fi
fi
処理内容:
- 既にインストール済みかチェック
- Microsoft公式の
dotnet-install.shをダウンロード -
/usr/local/binにインストール(プリザンター公式手順に準拠) - 現在のセッションでPATHを通す
2. PostgreSQL 17のインストール
PostgreSQL公式リポジトリから最新版をインストールします。
# 2. PostgreSQL 17 のインストール
log "[2/9] PostgreSQL 17 のインストール..."
log " apt パッケージリストを更新中..."
apt-get update -qq
log " curl と ca-certificates をインストール中..."
apt-get install -y curl ca-certificates
log " PostgreSQL 公式リポジトリを追加中..."
install -d /usr/share/postgresql-common/pgdg
curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail \
https://www.postgresql.org/media/keys/ACCC4CF8.asc
echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] \
https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" \
> /etc/apt/sources.list.d/pgdg.list
log " PostgreSQL リポジトリを更新中..."
apt-get update -qq
log " PostgreSQL 17 をインストール中(数分かかる場合があります)..."
apt-get install -y postgresql-17
処理内容:
- PostgreSQL公式のGPGキーを追加
- 公式リポジトリを追加
- PostgreSQL 17をインストール(進捗が見えるように出力)
3. OSユーザー postgres のパスワード設定
Ubuntuのシステムユーザー postgres にパスワードを設定します。
# 3. OS ユーザー postgres のパスワード設定
log "[3/9] OS ユーザー postgres のパスワード設定..."
echo "postgres:${POSTGRES_OS_USER_PASSWORD}" | chpasswd
log "✓ OS ユーザー postgres のパスワード設定完了"
処理内容:
-
chpasswdコマンドでパスワードを設定 - プリザンター公式手順の「sudo passwd postgres」を自動化
4. PostgreSQL管理ユーザー postgres のパスワード設定
データベース管理ユーザーのパスワードを設定します。
# 4. PostgreSQL DB ユーザー postgres のパスワード設定
log "[4/9] PostgreSQL 管理ユーザー postgres のパスワード設定..."
sudo -u postgres psql -c "ALTER ROLE postgres WITH PASSWORD '${POSTGRES_DB_PASSWORD}';"
log "✓ PostgreSQL 管理ユーザー postgres のパスワード設定完了"
処理内容:
-
ALTER ROLEでデータベース側のpostgresユーザーのパスワードを設定 - PleasanterのRds.jsonの設定で使用
5. ログ出力設定の構成
PostgreSQLのログ設定を変更します。
# 5. ログ出力設定
log "[5/9] PostgreSQL ログ出力設定..."
PG_CONF="/etc/postgresql/17/main/postgresql.conf"
if [ -f "$PG_CONF" ]; then
# バックアップを作成
cp "$PG_CONF" "${PG_CONF}.backup.$(date +%Y%m%d%H%M%S)"
# ログ設定を変更
sed -i "s/^#log_destination = 'stderr'/log_destination = 'stderr'/" "$PG_CONF"
sed -i "s/^log_destination = 'syslog'/log_destination = 'stderr'/" "$PG_CONF"
sed -i "s/^#logging_collector = off/logging_collector = on/" "$PG_CONF"
sed -i "s/^logging_collector = off/logging_collector = on/" "$PG_CONF"
sed -i "s/^#log_line_prefix = '%m \[%p\] %q%u@%d '/log_line_prefix = '[%t]%u %d %p[%l]'/" "$PG_CONF"
log "✓ ログ出力設定完了"
fi
処理内容:
- 設定ファイルをバックアップ(タイムスタンプ付き)
-
sedで設定を自動変更 - プリザンター公式手順の手動編集を自動化
6. リモートアクセス設定
外部からPostgreSQLに接続できるように設定します。
# 6. リモートアクセス設定
if [ "${ALLOW_REMOTE}" = "yes" ]; then
log "[6/9] リモートアクセス設定..."
# listen_addresses と port の設定
sed -i "s/^#listen_addresses = 'localhost'/listen_addresses = '*'/" "$PG_CONF"
sed -i "s/^listen_addresses = 'localhost'/listen_addresses = '*'/" "$PG_CONF"
sed -i "s/^#port = 5432/port = 5432/" "$PG_CONF"
# pg_hba.conf にアクセス許可を追加
PG_HBA="/etc/postgresql/17/main/pg_hba.conf"
if [ -f "$PG_HBA" ]; then
cp "$PG_HBA" "${PG_HBA}.backup.$(date +%Y%m%d%H%M%S)"
if ! grep -q "host.*all.*all.*${ALLOWED_CIDR}" "$PG_HBA"; then
echo "host all all ${ALLOWED_CIDR} scram-sha-256" >> "$PG_HBA"
log "✓ pg_hba.conf に ${ALLOWED_CIDR} からのアクセスを許可"
fi
fi
log "✓ リモートアクセス設定完了"
fi
処理内容:
-
listen_addresses='*'で全てのIPからの接続を待ち受け -
pg_hba.confで指定CIDRからの接続を許可 - 既に設定済みの場合は重複追加しない
7. サービスの再起動と自動起動設定
PostgreSQLサービスを再起動し、自動起動を有効化します。
# 7. サービスの再起動と自動起動有効化
log "[7/9] PostgreSQL サービス再起動と自動起動有効化..."
systemctl restart postgresql
systemctl enable postgresql >/dev/null 2>&1
log "✓ サービス再起動と自動起動有効化完了"
処理内容:
- 設定変更を反映するため再起動
- OS起動時に自動起動するよう設定
8. Pleasanterインストーラのインストール
プリザンターのセットアップツールをインストールします。
# 8. Pleasanter インストーラのインストール
log "[8/9] Pleasanter インストーラのインストール..."
log " dotnet tool をインストール中..."
dotnet tool install -g Implem.PleasanterSetup
log " PATH 設定を .bashrc に追加中..."
echo 'export PATH="$PATH:~/.dotnet/tools"' >> ~/.bashrc
echo 'export DOTNET_ROOT=/usr/local/bin' >> ~/.bashrc
echo 'export PATH=$PATH:$DOTNET_ROOT' >> ~/.bashrc
# 現在のセッション用にPATHを追加
export PATH="$PATH:$HOME/.dotnet/tools"
export DOTNET_ROOT=/usr/local/bin
log "✓ Pleasanter インストーラのインストール完了"
処理内容:
-
Implem.PleasanterSetupをグローバルツールとしてインストール -
.bashrcにPATH設定を追加(再ログイン後も使えるように) - 現在のセッションでも即座に使えるようexport
9. Pleasanterセットアップと起動
Implem.PleasanterSetup(インストーラ)を起動してプリザンター資源の配置後、プリザンターを起動します。
# 9. Pleasanter セットアップの実行
log "[9/9] Pleasanter セットアップの実行..."
log " pleasanter-setup を実行中..."
log " (対話形式で設定を入力してください)"
pleasanter-setup
log "✓ Pleasanter セットアップ完了"
# 10. Pleasanter の起動
log ""
log "Pleasanter を起動しています..."
PLEASANTER_DIR="/web/pleasanter/Implem.Pleasanter"
if [ -d "$PLEASANTER_DIR" ]; then
cd "$PLEASANTER_DIR"
log " 実行ユーザー: ${PLEASANTER_RUN_USER}"
log " (Ctrl+C で停止できます)"
sudo -u "${PLEASANTER_RUN_USER}" /usr/local/bin/dotnet Implem.Pleasanter.dll
else
log "警告: Pleasanter ディレクトリが見つかりません"
fi
処理内容:
-
pleasanter-setupで対話形式のセットアップ - セットアップ完了後、指定ユーザーでプリザンターを起動
- ブラウザから
http://<IPアドレス>:5000でアクセス可能
注意事項
このスクリプトは開発・検証環境向けです。本番環境で使用する場合は、セキュリティ面に十分考慮して設定してください。
さいごに
上記スクリプトで簡単な検証環境は楽に構築できるようになったので、今後も活用していきたいと思います。