はじめまして。デジタルイノベーション推進室の戦闘員Oです。
今回は「企業がSonarQubeをお試し利用する構成」(正式採用の際には拡張できる最小限の構成)を目指します。
目次
- 今回のゴール:SonarQube ServerのAWS構成イメージ
- VPC・NAT・EC2・VPCエンドポイント・RDSの作成
- SonerQube Serverのインストール
- Application Load Balancerの設定
- さいごに
1.今回のゴール:SonarQube ServerのAWS構成イメージ

SonarQube Serverを企業がお試し利用することを考え、上記のAWS構成にしました。
- 基本的なAWS知識(VPCやEC2)については理解できている方を対象にしています。
- 静的解析するソースコード量が多くなる場合を考慮し、データベースはRDSとします。
- CloudFrontやWAF、カスタムドメインなどに拡張できるよう、ALBを使います。
- EC2はAmazon Linux 2023を使います。
- SonarQube ServerのエディションはCommunity Editionを使います。
- SSMのセッションマネージャで接続するため、VPCエンドポイントを作成します。
- データベースにはAurora(PostgreSQL)を使います。
- “VPCなど”のようなAWSマネジメントコンソールのかんたん作成を駆使しています。
- SonarQube IDEの設定やSonarQube IDEとSonarQube Serverの接続については次回「SonarQube IDEからServerに接続」で解説いたします。
SonarQubeについては以下のブログをご参照ください。
2.VPC・NAT・EC2・VPCエンドポイント・RDSの作成
ロードバランサ以外のAWSリソースを作成します。
- VPC・NATの作成
AWSマネジメントコンソールから“VPC”⇒”VPCの作成”に進んでください。“VPCなど“を使って簡単作成します。

設定項目 | 設定値 |
---|---|
名前タグの自動生成 | {任意のVPC名} |
IPv4 CIDR ブロック | 10.0.0.0/16 |
IPv6 CIDR ブロック | IPv6 CIDR ブロックなし |
テナンシー | デフォルト |
アベイラビリティゾーン (AZ) の数 | 2 |
パブリックサブネットの数 | 2 |
プライベートサブネットの数 | 2 |
NAT ゲートウェイ ($) | 1AZ内 |
VPC エンドポイント | なし |
DNS オプション |
☑DNS ホスト名を有効化 ☑DNS 解決を有効化 |
- EC2の作成
AWSマネジメントコンソールから“EC2”⇒”インスタンスの起動”に進んでください。
設定項目 | 設定値 |
---|---|
名前とタグ - 名前 | {任意のEC2名} |
Amazon マシンイメージ (AMI) | Amazon Linux 2023 AMI |
アーキテクチャ |
64ビット |
インスタンスタイプ |
t3.medium |
キーペア | 新しいキーペアの作成 |
ネットワーク | {先ほど作成したVPC} |
サブネット | {private1のサブネット} |
セキュリティグループ |
インバウンドルールは以下
|
ストレージを設定 | 30GB |
高度な詳細のIAM インスタンスプロフィール | IAMポリシー:AmazonSSMManagedInstanceCoreを含んだIAMロールを作成し、設定してください。 |
※無料枠のt2.microでは動きません。最小のハードウェア要件としては 64ビット、CPU2コア、RAM4GB、ディスク30GBになります。
- VPCエンドポイントの作成
AWSマネジメントコンソールから“VPC”⇒”エンドポイントを作成”に進んでください。以下のVPCエンドポイントをprivate1のサブネットに作成します。
・com.amazonaws.{region}.ssm
・com.amazonaws. {region}.ec2messages
・com.amazonaws. {region}.ssmmessages
参考URL: Systems Manager のために VPC エンドポイントを使用して EC2 インスタンスのセキュリティを強化する
設定項目① | 設定値 |
---|---|
名前タグ - オプション | {任意のVPCエンドポイント名} |
タイプ | AWSのサービス |
サービス | com.amazonaws.{region}.ssm |
VPC | {先ほど作成したVPC} |
サブネット | {private1のサブネット} |
セキュリティグループ |
インバウントルールは以下
|
設定項目② | 設定値 |
---|---|
名前タグ - オプション | {任意のVPCエンドポイント名} |
タイプ | AWSのサービス |
サービス | com.amazonaws.{region}.ec2messages |
VPC | {先ほど作成したVPC} |
サブネット | {private1のサブネット} |
セキュリティグループ |
インバウントルールは以下
|
設定項目② | 設定値 |
---|---|
名前タグ - オプション | {任意のVPCエンドポイント名} |
タイプ | AWSのサービス |
サービス | com.amazonaws.{region}.ssmmessages |
VPC | {先ほど作成したVPC} |
サブネット | {private1のサブネット} |
セキュリティグループ |
インバウントルールは以下
|
- RDSの作成
AWSマネジメントコンソールから“RDS”⇒”データベースの作成”に進んでください。Aurora PostgreSQLを”簡単に作成”で構築します。PostgreSQLバージョンは13~17が利用できます。

設定項目 | 設定値 |
---|---|
データベースの作成方法を選択 | 簡単に作成 |
エンジンのタイプ | Aurora (PostgreSQL Compatible) |
DBインスタンスサイズ | 開発/テスト |
DB クラスター識別子 | {任意のデータベース名} |
マスターユーザー名 |
{任意のマスターユーザ名} 今回の例ではpostgres_sonarとします。 |
認証情報管理 | セルフマネージド |
マスターパスワードおよびマスターパスワードを確認 |
{任意のマスターパスワード} 今回の例ではpostgres_sonarとします。 |
EC2 接続をセットアップする - 任意 └コンピューティングリソース |
EC2 コンピューティングリソースに接続 |
EC2 接続をセットアップする - 任意 └EC2 インスタンス |
{先ほど作成したEC2} |
DNS オプション |
☑DNS ホスト名を有効化 ☑DNS 解決を有効化 |
3.SonerQube Serverのインストール
先ほど作成したEC2にSSH接続し、SonarQube Serverのインストールと設定を行います。
今回インストールSonarQube Serverは“sonarqube-25.5.0.107428.zip“を使います。
インストールするzipファイル名は以下からダウンロードできるファイルで確認できます。
https://www.sonarsource.com/products/sonarqube/downloads/

- セッションマネージャからEC2に接続
AWSマネジメントコンソールから“EC2”⇒”インスタンス”に進んでください。作成したEC2を選択し、“接続”からセッションマネージャの接続ができます。

- OpenJDK 17のインストール
OpenJDK 17をインストールし、環境変数”JAVA_HOME”, ”PATH”, ”SONAR_JAVA_HOME”を設定します。以下の順でコマンドを実行してください。Oracle JRE または OpenJDK、Javaバージョン17または21が必要です。
$ sudo wget https://download.java.net/java/GA/jdk17/0d483333a00540d886896bac774ff48b/35/GPL/openjdk-17_linux-x64_bin.tar.gz |
- Linuxカーネルのパラメータ設定
以下の順でコマンドを実行してください。
$ sudo vi /etc/sysctl.d/99-sonarqube.conf |
- リソース制限の設定
以下の順でコマンドを実行してください。
$ sudo vi /etc/security/limits.d/99-sonarqube.conf |
- Sonarqubeユーザの作成
以下の順でコマンドを実行してください。
$ sudo useradd sonarqube |
- SonarQube Serverインストール
以下の順でコマンドを実行してください。
$ sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-25.5.0.107428.zip -O /usr/local/sonarqube.zip |
※“sonarqube-25.5.0.107428“はダウンロードするバージョンに合わせて変更してください。
- Aurora PostgreSQLにデータベースを作成
以下の順でコマンドを実行してください。
$ sudo dnf update -y |
※psql -h <RDSエンドポイント> -d <データベース名> -U <管理者ユーザ名>の<RDSエンドポイント>についてはAWSマネジメントコンソールの作成したRDSから確認できます。

- SonarQube ServerのPostgreSQL接続設定
以下の順でコマンドを実行してください。
$ sudo vi /usr/local/sonarqube-25.5.0.107428/conf/sonar.properties |
- 設定反映のため再起動
以下コマンドを実行してください。
$ sudo shutdown -r now |
セッションが一度切れますので、再度セッションマネージャの接続を行ってください。イント}/sonar
- SonarQube Serverの起動
以下コマンドを実行してください。
$ su - sonarqube |
SonarQube Serverのログは“/usr/local/sonarqube-25.5.0.107428/logs/”に出力されます。起動成功した場合、web.logに以下の様なログが出力されます。
$ su - sonarqube |
※起動に失敗している場合、SonarQube Serverは自動で停止するようです。
原因はweb.logやes.log(elastic searchのログ)に出力されています。
・Linuxカーネルのパラメータ設定
・リソース制限の設定
・SonarQube ServerのPostgreSQL接続設定
このあたりをご確認ください。
4.Application Load Balancerの設定
Internetからアクセスするため、ターゲットグループとApplication Load Balancerの設定を行います。カスタムドメインやCloudFront,WAFについてはご利用に合わせて拡張してください。
ターゲットとなるEC2のSonarQube Serverは9000ポートで待ち受けています。
- ターゲットグループの作成
AWSマネジメントコンソールから“EC2”⇒”ターゲットグループ” ⇒”ターゲットグループの作成”に進んでください。
設定項目 | 設定値 |
---|---|
ターゲットタイプの選択 | インスタンス |
ターゲットグループ名 | {任意のターゲットグループ名} |
プロトコル | HTTP |
ポート | 9000 |
VPC | {作成したVPC} |
ヘルスチェック | HTTP / |
使用可能なインスタンス 選択したインスタンスのポート |
{作成したEC2} 9000 |
- ロードバランサの作成
AWSマネジメントコンソールから“EC2”⇒”ロードバランサ” ⇒”ロードバランサの作成”に進んでください。
Application Load Balancerを選択してください。

設定項目 | 設定値 |
---|---|
ロードバランサー名 | {任意のロードバランサ名} |
スキーム | インターネット向け |
ロードバランサーの IP アドレスタイプ | IPv4 |
VPC | {作成したVPC} |
IP プール | チェックしない |
認証情報管理 | セルフマネージド |
アベイラビリティーゾーンとサブネット |
Public1、Public2のサブネットを選択 |
セキュリティグループ |
インバウンドルールは以下 HTTP80:マイIP(※) |
※最初はSonarQube Serverがデフォルトパスワードなので、IP制限をかけておいてください。また、HTTPSを利用される場合は“HTTPS443: マイIP“
とし、ACMの設定を行ってください。
- SonarQube Serverの画面表示
http://{ロードバランサのDNS}/
にアクセスする事でSonarQube Serverを確認いただけます。
初期のユーザ/passwordは admin/adminになります。
ログイン後、すぐにパスワードを変更してください。

5. さいごに
今回はSonarQube Serverを立ち上げるところまで進みました。
次回は、SonarQube Serverにユーザとプロジェクトを作成し、SonarQube IDEから接続するところまで進めます。
昨今のセキュリティは観点が多いので1人の頭脳ではカバーしきれません!(特に私!)
SonarQubeやSecurity Hubなど“セキュリティチェックしてくれる仕組み“をどんどん活用しましょう。