以前から気になっていましたが、ngrokというトンネリングサービスがあります。このサービスを使うと、ローカルで動作するアプリケーションをインターネット経由でアクセスできます。
このngrokを使って、ローカルのコンテナ環境で実行しているOracle APEXのアプリケーションを、インターネット経由でアクセスできるようにしてみます。
作業環境は以下です。手元のブラウザからは、http://localhost:8181/ords/apexでAPEXにアクセスします。
ローカルPCで、プロトコルがhttp、ポート番号が8181で待ち受けしているアプリケーションをインターネットに公開します。
以下のコマンドを実行します。
ngrok http 8181
コマンドを実行したターミナルに、トンネルの稼働状況が表示されます。
Forwardingに表示されているホスト名を確認します。
ブラウザからこのホストにアクセスします。Freeプランの場合、最初に確認画面が表示されます。Visit Siteをクリックします。
Oracle APEXを実行します。
APEXのワークスペースへのサインイン画面が表示されます。ローカル環境に作成したワークスペースおよびユーザーでサインインします。
CORSのエラーが発生し、サインインできません。
https://ホスト名.ngrok-free.app/...
APEXは以下のサイトからリクエストが送信されていると認識しています。認識しているプロトコルが異なります。
http://ホスト名.ngrok-free.app/...
コンテナを再起動します。
CORDSのエラーを返しているのはAPEXではなくORDSなので、ORDSにhttps://ホスト名.ngrok-free.app/からのリクエストを信頼するように設定します。
ORDSを実行しているコンテナ(apex-ords)に接続します。
podman exec -it apex-ords sh
% podman exec -it apex-ords sh
sh-5.1$
以下のコマンドを実行し、security.externalSessionTrustedOriginsの設定を追加します。
ords --config /etc/ords/config config set security.externalSessionTrustedOrigins https://ホスト名.ngrok-free.app
ords --config /etc/ords/config config set security.externalSessionTrustedOrigins https://ホスト名.ngrok-free.app
sh-5.1$ ords --config /etc/ords/config config set security.externalSessionTrustedOrigins https://c1e7a3247247.ngrok-free.app
ORDS: Release 25.3 Production on Fri Nov 14 07:39:25 2025
Copyright (c) 2010, 2025, Oracle.
Configuration:
/etc/ords/config
The global setting named: security.externalSessionTrustedOrigins was set to: https://c1e7a3247247.ngrok-free.app
sh-5.1$
コンテナを再起動します。
exit
podman restart apex-ords
sh-5.1$ exit
exit
% podman restart apex-ords
apex-ords
%
最初からアクセスし直すと、今度はアプリケーション・ビルダーにサインインできます。
Freeプランの場合、ngrokを起動するたびに新たなホスト名が割り当たります。そのため、ngrokを起動するたびに、ORDSのsecurity.externalSessionTrustedOriginsを更新する必要があります。無料なので致し方ありません。有料プランに移行すると、エンドポイントのホスト名を固定できます。
今回の記事は以上になります。
完







