
Amazon EC2で構築するOpenOnDemand 検証環境の作り方
はじめに
Open OnDemand は HPC クラスタ環境へブラウザからアクセスするための Web ポータルです。本記事では EC2 インスタンスに Open OnDemand の検証環境を構築する手順を紹介します。

実際に導入する際にはいくつかのハマりどころがあります。まずは動作する環境を構築し、Open OnDemand の基本的な機能や設定方法を理解することを目的としました。
詳細は公式ドキュメントをご参照ください。
Open OnDemand とは
Open OnDemand は、Ohio Supercomputer Center(OSC)が開発・管理する Web ポータルです。ブラウザから HPC クラスタを操作できる利点から、世界中の 400 以上の HPC センターで採用されています。
主な特徴は以下の通りです。
- CLI のシェルアクセス
- インタラクティブなアプリケーションの実行
- ファイルのアップロード・ダウンロードの操作
- ジョブのサブミットや、管理
- GPU 環境とデスクトップアプリケーションの操作
日本を代表するスパコン「富岳」でも 2023 年 5 月から Open OnDemand が採用されています。従来、スパコン利用にはシェル操作や SSH 鍵の作成など前提知識が必要でした。Open OnDemand により、ブラウザから富岳を簡単に操作できるようになりました。
検証内容
今回の検証では以下の構成で Open OnDemand を導入しました。
| 項目 | 内容 |
|---|---|
| EC2インスタンス | t3.small |
| EBS(gp3) | 8GB |
| OS | Ubuntu 24.04 |
| Open OnDemand | v4.0.1 |
| 認証方式 | PAM認証(本番環境では非推奨) |
| SSL証明書 | Let's Encrypt(EC2のEIPに対して発行) |
| 目的 | ホストサーバへのターミナル接続 |
公式ドキュメントだけでは実際の導入時の問題点が見えにくいです。特に認証や SSH 接続の設定は理解しづらい部分があります。そこで最小構成での動作環境構築を目指しました。
導入手順
今回必要になる設定の概要です。

1. Open OnDemandのインストール
まずは Open OnDemand をインストールします。
sudo apt install -y apt-transport-https ca-certificates
wget -O /tmp/ondemand-release-web_4.0.0-noble_all.deb https://apt.osc.edu/ondemand/4.0/ondemand-release-web_4.0.0-noble_all.deb
sudo apt install -y /tmp/ondemand-release-web_4.0.0-noble_all.deb
sudo apt update
sudo apt install -y ondemand
sudo systemctl start apache2
sudo systemctl enable apache2
2. PAM認証の設定
PAM 認証を簡易的な認証方式として設定します。これにより Linux システム上のユーザーアカウントで Web インターフェースにログインできます。つまり、/etc/passwdに登録されたユーザー名とパスワードで Open OnDemand にアクセスできるようになります。
この方法の利点は、別途認証システムを構築せず既存の Linux ユーザーを活用できることです。例えば EC2 インスタンスのubuntuユーザーでログインできます。ただし、システム上の全ユーザーが Web インターフェースにアクセスできるようになるため、不要なアカウントは事前に削除しておきましょう。
# mod_authnz_pamモジュールのインストール
sudo apt install -y libapache2-mod-authnz-pam
# モジュールを有効化
sudo a2enmod authnz_pam ssl
# PAM設定ファイルの作成
sudo cp /etc/pam.d/sshd /etc/pam.d/ood
# /etc/shadowファイルの権限設定(注意)
sudo chmod 640 /etc/shadow
sudo chgrp www-data /etc/shadow
3. ユーザーマッピングの設定
認証ユーザーをシステムユーザーにマッピングする設定します。このスクリプトはログインユーザー名を小文字に変換し、システムユーザーとして認識させます。
# ディレクトリの作成
sudo mkdir -p /opt/ood/ood_auth_map/bin
# ユーザーマッピングスクリプトの作成
cat << 'EOF' | sudo tee /opt/ood/ood_auth_map/bin/ood_auth_map.regex
#!/bin/bash
REX="([^@]+)"
INPUT_USER="$1"
if [[ $INPUT_USER =~ $REX ]]; then
MATCH="${BASH_REMATCH[1]}"
echo "$MATCH" | tr '[:upper:]' '[:lower:]'
else
# can't write to standard out or error, so let's use syslog
logger -t 'ood-mapping' "cannot map $INPUT_USER"
# and exit 1
exit 1
fi
EOF
# スクリプトに実行権限を付与
sudo chmod +x /opt/ood/ood_auth_map/bin/ood_auth_map.regex
4. Let's Encryptで証明書を取得
SSL 証明書を取得します。事前準備として以下が必要です。
- EC2 の EIP をドメイン名に登録する
- セキュリティグループで 80 番ポートを開放する
# Certbotのインストール
sudo apt install -y certbot python3-certbot-apache
# 証明書の取得(対話式)
DOMAIN_NAME=openondemand.example.com
sudo certbot --apache -d $DOMAIN_NAME
# プロンプトに従ってメールアドレスなどを入力
# 自動更新の設定
sudo systemctl enable certbot.timer
sudo systemctl start certbot.timer
証明書取得時に以下のようなプロンプトが表示されたらcでキャンセルします。
Deploying certificate
We were unable to find a vhost with a ServerName or Address of openondemand.example.com.
Which virtual host would you like to choose?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: ood-portal.conf | | | Enabled
2: 000-default.conf | | | Enabled
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
5. Open OnDemandの設定
Open OnDemand のポータル設定です。ここで PAM 認証を指定しています。
cat << EOF | sudo tee /etc/ood/config/ood_portal.yml
# サーバー名の設定
servername: $DOMAIN_NAME
# SSL設定
ssl:
- 'SSLCertificateKeyFile "/etc/letsencrypt/live/$DOMAIN_NAME/privkey.pem"'
- 'SSLCertificateFile "/etc/letsencrypt/live/$DOMAIN_NAME/fullchain.pem"'
# PAM認証の設定
auth:
- 'AuthType Basic'
- 'AuthName "Open OnDemand"'
- 'AuthBasicProvider PAM'
- 'AuthPAMService ood'
- 'Require valid-user'
# ユーザーマッピングの設定
user_map_cmd: "/opt/ood/ood_auth_map/bin/ood_auth_map.regex"
# ノードURIの設定
node_uri: '/node'
rnode_uri: '/rnode'
EOF
# Apache設定ファイルの生成
sudo /opt/ood/ood-portal-generator/sbin/update_ood_portal
設定に問題がないか確認し、Apache を再起動します。
sudo apache2ctl configtest
sudo systemctl restart apache2
以上の設定でポータルへのアクセスは可能にります。
動作確認
Web ブラウザで Open OnDemand のポータル用に設定したドメイン名へアクセスします。すると以下の Basic 認証画面が表示されます。既定のubuntuユーザーにはパスワードが設定されていなかったのでパスワードを設定して入力しました。

素っ気ない感じのポータル画面にログインできました。ユーザー認証は機能しました。

シェルアクセスが可能か試してみます。

クラスターの設定をしないと何も使えなかったです。

ユーザー認証付きの Web ポータルへのアクセスまでは動作確認できました。
Web ポータルの設定
1. クラスター設定
Open OnDemand で利用するクラスターの設定をします。今回はローカルホストにシェルアクセスができるクラスターとして設定します。
sudo mkdir -p /etc/ood/config/clusters.d
sudo bash -c 'cat > /etc/ood/config/clusters.d/my_cluster.yml << EOF
---
v2:
metadata:
title: "My Linux Cluster"
url: "https://openondemand.example.com"
hidden: false
login:
host: "localhost"
job:
adapter: "linux_host"
submit_host: "localhost"
ssh_hosts:
- host: "localhost"
site_timeout: 7200
debug: true
strict_host_checking: false
tmux_bin: "/usr/bin/tmux"
batch_connect:
basic:
script_wrapper: |
export PATH="/opt/ood/linuxhost_adapter/bin:\$PATH"
%s
EOF'
2. SSH 設定
Open OnDemand からローカルホストへの SSH 接続を設定します。
# tmuxをインストール
sudo apt install -y tmux
# SSHの設定ファイルを編集
sudo bash -c 'cat >> /etc/ssh/ssh_config << EOF
EnableSSHKeysign yes
HostbasedAuthentication yes
EOF'
sudo bash -c 'cat >> /etc/ssh/sshd_config << EOF
HostbasedAuthentication yes
UseDNS yes
EOF'
# ホスト鍵の登録
sudo ssh-keyscan localhost | sudo tee -a /etc/ssh/ssh_known_hosts
echo "localhost" | sudo tee /etc/hosts.equiv
# SSHサービスを再起動
sudo systemctl restart ssh
設定が正しく行われたかテスト接続します。SSH 接続できれば問題ありません。
# ubuntuユーザーとしてテスト
sudo -u ubuntu ssh localhost
最後に、Apache 設定を更新して再起動します。
sudo /opt/ood/ood-portal-generator/sbin/update_ood_portal
sudo systemctl restart apache2
動作確認
改めて Web ポータルへアクセス後、「Clusters」メニューから「My Linux Cluster Shell Access」を選択するとターミナルを起動できます。

Web ポータルからローカルホストへシェルアクセスが可能になりました。

他のユーザーでアクセスできるのか?
システムユーザーを追加してみます。
$ sudo useradd guest-0
$ sudo passwd guest-0
$ ls /home
ssm-user ubuntu
$ sudo mkdir -p /home/guest-0
$ sudo chown -R guest-0 /home/guest-0/
$ sudo chmod 700 /home/guest-0
作成したユーザーで Web ポータルへログインが可能であり、ログインしたユーザーのホームディレクトリへシェルアクセスも可能でした。

補足
システムユーザーを追加して、ホームディレクトリを未作成状態でも Web ポータルへログインはできましたが、シェルアクセスするとホームディレクトリがないとエラーになりました。

おわりに
ハンズオントレーニングや講義では、参加者全員に同じ実行環境を提供したいケースが多くあります。参加者の PC を利用すると環境依存のトラブルがよく発生します。
Open OnDemand は本来 HPC クラスタ向けのツールですが、今回の検証で、参加者全員に同じ実行環境を提供するプラットフォームとしても活用できる可能性が見えてきました。参加者がブラウザだけで用意された環境にアクセスできる点が大きなメリットです。
今回の検証では、公式ドキュメントだけでは把握しにくい導入時の課題を解消しました。特に認証設定や SSH 接続は理解しづらい部分でしたが動作する環境の構築に成功しました。
今後の課題は以下の 2 点です。検証予定です。
- より安全な認証方式への見直し
- 別インスタンスを実行環境として利用する設定方法の検証








