今回は、SynologyのVirtual Machine Manager(VMM)上のUbuntu 24.04環境にDockerを使って、超高速かつ簡単に国産オープンソースのローコード開発ツール「Pleasanter(プリザンター)」を構築する手順をご紹介します。
これまで複雑な環境構築に苦労されてきた方必見、Dockerと公式イメージを使えば驚くほどシンプルに、しかもTailscaleを活用して外部にポートを露出させない鉄壁のセキュリティ環境が一瞬で構築できます!
実は以前にPleasanterの構築では以下のような記事を書いてます。
今回の記事ですが、結局、Synologyのコンテナマネージャー上では、やっぱり構築できないのですよね。
それは分かったのですが、じゃ、VMM上でUbuntu24.04+Docker+Pleasanterはどうなの?って話になります。
なので、前回のVMM+Ubuntu24.04+Pleasanterから一歩進化した形です。
なおかつ、今回は、Tailscaleをつかって、このpleasanter自体はポート露出しないというやり方です。
外部からのアクセスは全てTailscaleでの接続という、強固なセキュリティとなってますので、昨今のセキュリティ対策にも一役買ってくれるのではないかと思います。
🛠️ 今回のシステム構成
- ホストOS: Synology VMM (Ubuntu 24.04 LTS)
- ネットワーク: Tailscale(ホスト側で接続し、プライベートなメッシュVPN経由で安全にアクセス)
- コンテナ管理: Docker / Docker Compose (公式イメージ利用)
- アプリケーション: Pleasanter + PostgreSQL
SynologyのVMMの設定は、以前の記事を参考にして貰えると良いかと思います。
Tailscaleの認証とかも特には書いてませんので、どこかのサイトを参考にしてくだい。まぁ、簡単なので、特に問題ないと思いますけど。
ステップ1:Ubuntu側のDocker環境の準備
まずは、VMM上で起動したUbuntu 24.04にSSH等でログインし、Dockerおよび必要なパッケージをインストールします。
1. 必須パッケージのインストール
Bash
sudo apt update && sudo apt install -y \
ca-certificates \
curl \
gnupg
2. Docker公式GPGキーとリポジトリの追加
Bash
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
3. Docker本体のインストール
Bash
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4. 一般ユーザーでDockerを使えるようにする設定
Bash
sudo usermod -aG docker $USER
newgrp docker
ステップ2:Tailscaleの導入とネットワークの確保
今回は外部からの不正アクセスを防ぐため、ホストOS(Ubuntu)にTailscaleを導入してプライベートネットワーク経由でのみアクセスさせます。
1. Tailscaleのインストール
Bash
curl -fsSL https://tailscale.com/install.sh | sh
2. ログイン認証の実施
Bash
sudo tailscale up
画面に表示されるURLをブラウザで開いてログイン認証を完了させます。これで、お手元のPC(同じTailscaleネットワーク内)からTera Term等で安全にSSH接続できるようになります。
ステップ3:Pleasanter(プリザンター)の構築
ここからが本番です!Pleasanter公式が推奨するモダンな構成(.env と compose.yaml を分ける方式)で構築します。
1. 作業用ディレクトリの作成
Bash
mkdir -p pleasanter && cd pleasanter
2. .env ファイルの作成
nano .env でファイルを開き、以下の内容を記述して保存します(※パスワードは必要に応じて変更してください)。
コード スニペット
POSTGRES_VERSION = 17
POSTGRES_VOLUMES_TARGET = /var/lib/postgresql/data
POSTGRES_USER = postgres
POSTGRES_PASSWORD = SetSaPWD
POSTGRES_DB = postgres
POSTGRES_HOST_AUTH_METHOD = scram-sha-256
POSTGRES_INITDB_ARGS = "--auth-host=scram-sha-256"
PLEASANTER_VERSION = latest
Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString = "Server=db;Database=postgres;UID=postgres;PWD=SetSaPWD"
Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString = "Server=db;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=SetAdminsPWD"
Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString = "Server=db;Database=#ServiceName#;UID=#ServiceName#_User;PWD=SetUsersPWD"
(保存:Ctrl + O → Enter、終了:Ctrl + X)
3. compose.yaml ファイルの作成
nano compose.yaml でファイルを開き、以下の内容を貼り付けて保存します。
YAML
services:
db:
container_name: postgres
image: postgres:${POSTGRES_VERSION}
environment:
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_DB
- POSTGRES_HOST_AUTH_METHOD
- POSTGRES_INITDB_ARGS
volumes:
- type: volume
source: pg_data
target: ${POSTGRES_VOLUMES_TARGET}
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U $${POSTGRES_USER:-postgres} -d $${POSTGRES_DB:-postgres} || exit 1" ]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
restart: unless-stopped
pleasanter:
container_name: pleasanter
image: implem/pleasanter:${PLEASANTER_VERSION}
restart: unless-stopped
depends_on:
db:
condition: service_healthy
ports:
- '50001:8080'
environment:
Implem.Pleasanter_Rds_PostgreSQL_SaConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString}
Implem.Pleasanter_Rds_PostgreSQL_OwnerConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString}
Implem.Pleasanter_Rds_PostgreSQL_UserConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString}
codedefiner:
container_name: codedefiner
image: implem/pleasanter:codedefiner
depends_on:
db:
condition: service_healthy
environment:
Implem.Pleasanter_Rds_PostgreSQL_SaConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString}
Implem.Pleasanter_Rds_PostgreSQL_OwnerConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString}
Implem.Pleasanter_Rds_PostgreSQL_UserConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString}
volumes:
pg_data:
name: ${COMPOSE_PROJECT_NAME:-default}_pg_data_volume
ステップ4:初期化と起動
1. CodeDefinerの実行(データベース初期化)
以下のコマンドを実行し、データベースのスキーマ等を作成します(途中でライセンス確認の y を求められたら入力します)。
Bash
docker compose run --rm codedefiner _rds /y /l "ja" /z "Asia/Tokyo"
2. コンテナの起動
Bash
docker compose up -d pleasanter
🚀 アクセスと初期ログイン
ブラウザを開き、TailscaleのIPアドレスを使って以下のURLにアクセスします。
- URL:
http://<UbuntuのTailscale IP>:50001 - ログインID:
Administrator - 初期パスワード:
pleasanter
初回ログイン後にパスワードの変更画面が表示されるため、安全なパスワードへ変更すれば完了です!
本当にそうですよね!Docker Composeであれば、新しいバージョンが出たときも以下の数ステップだけで瞬時にアップデートできるので、これからの運用やバージョンアップ作業も文字通り「サクサク」こなせるようになります。
💡 今後のスマートな更新手順
将来的にバージョンを上げる際も、Tera Termでプロジェクトフォルダ(pleasanter)に移動して以下のコマンドを実行するだけです:
- 最新イメージの取得(プル)
Bashdocker compose pull - コンテナの再作成と起動(ローリングアップデート)
Bashdocker compose up -d pleasanter
これだけで裏側のデータ(PostgreSQLのボリューム)は安全に保持されたまま、アプリ本体だけが最新バージョンに綺麗に入れ替わります。
これなら定期的なメンテナンスも全く苦にならなくなります。
ようやく、思い通りな環境で使うことができるようになりました。
最後に
今回、こんなことを思い立ったのは、
「バージョンが古くなったなぁ。でも、更新するが面倒なんだよなぁ。。。」
「どうにかDockerが使えないかなぁ。更新時の楽さは比べ物にならないしなぁ。」
という思いと、
「最近、セキュリティがなぁ。心配になってきたなぁ。」
「こっわ。最近、何があるか。わからん。。」
という思いからですね。
ちなみにセキュリティに関する考えは以下の記事を参考にしてください。
なので、楽さとセキュリティ面の両立を狙ったという感じではあります。
まぁ、これでしばらく楽に使える感じがします。
しかし、Ubuntuでセットアップした時と比べると、非常にあっけないというか、簡単にセットアップできましたね。
やっぱ、Dockerが使えるのは助かります。
更新も楽になるので、良い事尽くめですね。
去年から使ってるPleasanterですが、ずっと、セットアップ環境が気に入らなかったので、これで気持ちが楽になりました。
Pleasanterの環境構築で、個人でやってる人ってあまりいない感じなので、参考になれば幸いです。





