Bitbucket Server で外向きの HTTP および HTTPS プロキシを構成する方法
プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Fisheye および Crucible は除く
このページの内容はサポート対象外のプラットフォームに関連しています。したがって、アトラシアン サポートではこのページの記載内容のサポートの提供は保証されません。この資料は情報提供のみを目的として提供されています。内容はお客様自身の責任でご利用ください。
セクション 1: 目的
このページでは、Bitbucket Server を設定し、アウトバウンド プロキシを経由して外部とやり取りできるようにします。これは Atlassian Marketplace などの、サーバーがホストされているネットワークの外部にあるサーバーにアクセスするために必要です。Bitbucket Server をリバース プロキシ (またはインバウンド プロキシ) の背後で実行したい場合は「Bitbucket のプロキシと保護」をご確認ください。
セクション 2: 構成
プロキシのサポートは、Bitbucket Server の起動時に特定のシステム プロパティを Java 仮想マシンに渡すことで設定されます。これらのプロパティは Oracle で定義された規則に従います。
http.proxyHost
http.proxyPort
(デフォルト: 80)http.nonProxyHosts
(デフォルト: <none>)https.proxyHost
https.proxyPort
HTTP プロキシを設定する場合は http.proxyHost
プロパティ、HTTPS プロキシの場合は https.proxyHost
を定義する必要があります。システム プロパティの設定の詳細については、「構成プロパティ」ドキュメントをご参照ください。
http.proxyHost
および http.proxyPort
プロパティは、HTTP プロトコル ハンドラが使用するプロキシ サーバーとポートを示します。次に例を示します。
-Dhttp.proxyHost=proxy.example.org -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.example.org -Dhttps.proxyPort=8080 -Dhttp.nonProxyHosts=localhost
http.nonProxyHosts
プロパティは、プロキシ サーバーを経由しない、直接接続されるホストを示します。値は、"|" で区切られたホストの一覧です。ワイルドカード "*" を照合に使用できます。次に例を示します。
-Dhttp.nonProxyHosts=*.foo.com|localhost|confluence|crowd
Bitbucket Server 5.0+ では次の注意事項が適用されます。
- パイプ (|) をバックスラッシュ (\) でエスケープする必要はありません。複数のプロキシ ホストを含めたい場合はパイプ (|) を単独で利用できます。
- 複数のプロキシ ホストを定義する際、さまざまな値をラップするためにクォーテーション (") やエスケープ クォーテーション (\") は使わないでください。個々の属性は単純にパイプ区切りの一覧として指定するようにします。
5.0 よりも古い Bitbucket バージョンで Linux をご利用の場合はパイプ文字 (|) のエスケープが必要な可能性があります (参考: JAVA Option '-Dhttp.nonProxyHosts' Does Not Work)。
http.nonProxyHosts
プロパティが設定されていない場合、すべての web リクエストがプロキシを経由します。ただし、Bitbucket Server インスタンスと Jira Server インスタンスのように 2 つのアトラシアン アプリケーションをアプリケーション リンクで接続する場合は、プロキシをバイパスして後半の http.nonProxyHosts
プロパティを追加することをおすすめします (以降の追加ポイント #2 をご確認ください)。
リンクの IP 検証を考慮した場合、プロキシ経由での転送では、トラフィックの転送形式によってはサーバーのソース IP が変更されてしまい、予期せぬ結果となる可能性がある点にご注意ください。
http.nonProxyHosts では少なくとも localhost を除外する必要があります。これを行わないと特定の機能が適切に動作しない可能性があります。このため、次のようになります。
-Dhttp.nonProxyHosts=localhost
追加のポイント 1: NTLM
NTLM は次のようになります。
- not supported by UPM.
- It is not supported by Stash either: BSERV-7694 - Use integrated Windows Auth for Proxy Authentication
- It is not supported by JIRA either: JRASERVER-2398 - Support NTLM authentication
Stash で動作するようにする方法
こちらやこちらの過去のコメントでご確認いただけるように、次のような手順を利用することで成功することが報告されています。
1. Jira/Stash サーバーで Cntlm Authentication Proxy をローカルにインストールする
2. 構成およびテストを行って "Cntlm" が企業の NTLM で動作することを確認したら、次のパラメーターを使用します。
3. cntlm.ini
でユーザー、ドメイン、およびプロキシ情報を更新し、次のコマンドでプロキシをテストします (Cntlm のインストール フォルダで実行します)。
cntlm -c cntlm.ini -I -M http://google.ro
4. パスワードが確認され、必要な認証情報が表示されるはずです。これは cntlm.ini
に保存する必要があります。
Username user
Domain domain
# provide actual value if autodetection fails
# Workstation pc-name
Proxy my_proxy_server.com:80
NoProxy 127.0.0.*, 192.168.*
Listen 127.0.0.1:54321
Listen 192.168.1.42:8080
Gateway no
SOCKS5Proxy 5000
# provide socks auth info if you want it
# SOCKS5User socks-user:socks-password
# printed authentication info from the previous step
Auth NTLMv2
PassNTLMv2 98D6986BCFA9886E41698C1686B58A09
注意: Linux では構成ファイルは cntlm.conf
になります
5. 上記のセクションで説明されている構成ファイルで "Cntlm" プロキシを指すようにします。これが NTLM との通信を行います。
追加のポイント 2: アプリケーション リンク
Bitbucket Server をほかのアプリケーションに接続する場合、nonProxyHosts
引数にアプリケーションの URL を追加します。これを行わない場合、Bitbucket Server がほかのアトラシアン アプリケーションに通信しようとした際に、HTTP リクエストがタイムアウトしたり、解決されない可能性があります。このため、アプリケーションがリンクされません。Bitbucket Server を Jira (
jira.atlassian.com
に存在) に接続するときの例は次のとおりです。
-Dhttp.nonProxyHosts=localhost|*.atlassian.com
追加のポイント 3: リポジトリのインポーター
Bitbucket 4.9 以降では git リポジトリを直接インポートできます。これは Java ではなくネイティブの Git を利用します。設定済みのプロキシ構成は適用されません。代わりに https://git-scm.com/docs/git-config にあるように Git クライアント用に http.proxy
を構成する必要があります。
追加のポイント 4: 認証の構成
プロキシ認証は、次のプロパティを Java に提供することで構成されます。
http.proxyUser
http.proxyPassword
https.proxyUser
https.proxyPassword
Bitbucket Server 5.0+
Bitbucket Server 5.0+ では setenv と環境変数に変更があります
Bitbucket Server 5.0 以降では setenv.sh
と setenv.bat
が取り除かれています。これらのファイルで設定されていたオプションは、環境変数で設定できるようになりました。環境変数の設定場所は、実行先のオペレーティング システムに応じます。
Linux
Linux で atlbitbucket
サービスを実行する場合、環境変数は無視されます。
Bitbucket Server 5.0+ の場合、_start-webapp.sh
でパラメーターを設定します。これらの値はサービスの起動時に読み取られます。
たとえば、 JVM_SUPPORT_RECOMMENDED_ARGS
を設定するには、ファイルに次の行を追加します。
JVM_SUPPORT_RECOMMENDED_ARGS="-Dhttp.proxyUser=atlaspirate -Dhttp.proxyPassword=yarrrrr -Dhttps.proxyUser=atlaspirate -Dhttps.proxyPassword=yarrrrr"
Windows
Bitbucket Server を実行しているユーザーで、パラメーターを環境変数として設定します。たとえば、JVM_SUPPORT_RECOMMENDED_ARGS
を設定したい場合、それを環境変数として作成して適切な値を割り当てます。Bitbucket Server がスタートアップ スクリプトやサービスを利用して起動する際に、この値が取得および適用されます。
以前の Bitbucket Server バージョン
Linux
以前の Bitbucket Server バージョンの場合、変更対象のスクリプト ファイルは <Bitbucket Server Installation>/bin/setenv.sh です。例は次のようになります。
JVM_SUPPORT_RECOMMENDED_ARGS="-Dhttp.proxyUser=atlaspirate -Dhttp.proxyPassword=yarrrrr -Dhttps.proxyUser=atlaspirate -Dhttps.proxyPassword=yarrrrr"
Windows
Start >> Run >> type in 'cmd' >> Enter
でコマンド ウィンドウを開きます。- Bitbucket Server のインストール ディレクトリの bin ディレクトリに
cd
します。 次のコマンドのいずれかを実行します。
バージョン 4.14.5 までの Bitbucket Servertomcat8w.exe
//ES//%SERVICENAME%
Bitbucket Server バージョン 5.0+bservmgr.exe
//ES/%SERVICENAME%
%SERVICENAME% を実際のサービス名 (AtlassianBitbucket 等) で置き換えます。
- Java タブをクリックし、現在の起動オプションの一覧を確認します。
Java オプションの下で、プロキシ構成オプションを独自の行として追加します。
-Dhttp.proxyUser=atlaspirate -Dhttp.proxyPassword=yarrrrr -Dhttps.proxyUser=atlaspirate -Dhttps.proxyPassword=yarrrrr
- Restart Bitbucket Server