はじめに

OSSの管理を行うための無償のツールと言ったとき、まず挙げられるのはSW360でしょう。現在Eclipseプロジェクトの1つとなっており、OSSにまつわるさまざまなサイトでも紹介されています。

しかし、構築にひと手間かかるツールであり、企業のイントラネット内では簡単にお試しと行かないこともあります。

今回は、プロキシ環境下でDockerを使ったSW360の構築についてご紹介します。

(2022-08-01 更新)「設定ファイルの修正」にてコマンド例を変更しました。

(2022-09-30 更新) SW360の新しいバージョン(16.0.0-M1)がリリースされました。SW360(16.0.0-M1)の構築記事を参照ください。

この記事でお伝えしたいこと

SW360のインストールを行い、ログインできるところまでを2022/5/10時点の情報として解説します。

以下のような方が読まれることを想定しています。

  • SW360について、試してみたい方。

また、以下の知識を必要とします。

  • Linuxに関する知識。
  • Dockerに関する知識。

環境

検証環境

本記事ではインターネットとはプロキシサーバーを介して接続する、以下のような環境を想定して説明を行います。

SW360サーバー(http://sw360.yourdomain)

  • OS

    Ubuntu 20.04 LTS

  • ソフトウエア

    git

    Docker version 20.10.14
    (sudo無しでdockerコマンドを実行できるよう設定済み)

プロキシサーバー(http://proxy.yourdomain:8080)
(プロキシの認証はありません)

準備

ソース取得

Githubからソース一式を取得します。現時点での最新リリース(sw360-15.0.0-M1)です。/app/build/以下に gitコマンドでcloneした後、タグをチェックアウトします。

                            
[コマンド例]
sudo mkdir /app
sudo chmod a+w /app
cd /app
mkdir build
cd build/
git clone https://github.com/eclipse/sw360.git
cd sw360/
git checkout -b sw360-15.0.0-M1 refs/tags/sw360-15.0.0-M1
                        

設定ファイルの修正

couchdbのバージョン設定を追加します。指定しないとイメージのビルドで失敗するため、現時点では必須です。GithubのREADMEに記載があるバージョン3.1.1を指定します。

                            
[コマンド例]
sed -i s/apt-get¥ install¥ -y¥ --force-yes¥ couchdb$/apt-get¥ install¥ -y¥ --force-yes¥ couchdb=3.1.1~focal/ ./scripts/docker-config/install_scripts/install_configure_couchdb.sh
                        

Dockerイメージビルドの実行時間が長い場合(スペック不足/ネットワーク速度/制限設定など)、maven dependenciesのダウンロードでconnection resetが発生します。
設定や環境問題ではなく、mavenのkepp-alive仕様によるもので、開始からの一定時間経過で発生するためkepp-aliveを無効にする設定(-Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false)をDockerfileのRUN mvnに追加します。

ビルドが体感で20分以上かかる場合は設定が必要ですが、通信時間が伸びるため、全体の処理時間は長くなります。

                            
[コマンド例 (2022-08-01 更新)]
sed -i 's/deployables¥/webapps$/deployables¥/webapps¥ -Dhttp.keepAlive=false¥ -Dmaven.wagon.http.pool=false/' Dockerfile
                        

プロキシ設定

イメージを作成するにあたり、mavenが実行されます。プロキシ環境下ではmavenのproxy設定を行う必要があります。./scripts/docker-config/mvn-proxy-settings.xml を編集してください。

                            
[コマンド例]
sed -i s/¥false/¥true/g scripts/docker-config/mvn-proxy-settings.xml
sed -i s/¥ip_address/¥proxy.yourdomain/g scripts/docker-config/mvn-proxy-settings.xml
sed -i s/¥10/¥8080/g scripts/docker-config/mvn-proxy-settings.xml
                        

プロキシ環境下ではDockerクライアントについてもプロキシ設定を追加します。~/.docker/config.jsonに設定を追加してください。

                            
[コマンド例]
mkdir ~/.docker
echo '{"proxies":{"default":{"httpProxy":"http://proxy.yourdomain:8080","httpsProxy":"http://proxy.yourdomain:8080","noProxy":"127.0.0.0/8"}}}' > ~/.docker/config.json
                        

Dockerイメージビルド

タグ名にsw360を指定してビルドします。
マシンスペックが足りない場合、イメージビルド時にcpu使用率にlimitをかけないとマシンが固まってしまうため、例ではcpu使用率50%を指定しています。

                            
[コマンド例]
docker build --cpu-period=100000 --cpu-quota=50000 -t sw360 .
                        

起動

アクセスポートに8090を指定してコンテナを起動します。以下、SW360のREADMEに記載されている起動例です。

                        
[コマンド例]
docker run -it -p 8090:8080 -p 5985:5984 -p 5435:5432 sw360
                    

コンソールでエンターを入力すると、SW360サービスが終了、コンテナが停止します。停止した場合は、docker start で停止したコンテナを起動してください。

初期設定

SW360を使用するには、UIを使った初期設定が必要です。

  • Liferayを使用している制約で、wikiにもインストールの自動化ができないとぼやきが入っています。

準備

設定で利用するファイルがソースに格納されているので、ローカルにチェックアウトします。SW360にアクセスするマシンで実施してください。

                            
[コマンド例]
git clone https://github.com/eclipse/sw360.git
cd sw360/
git checkout -b sw360-15.0.0-M1 refs/tags/sw360-15.0.0-M1
                        

Liferayパラメータ設定

基本的に公式のWikiを参照して設定します。

SW360サーバーのポート8090( http://sw360.yourdomain:8090)にアクセスします。ログインIDは「setup@sw360.org」パスワード「sw360fossy」でログインしてください。

Applications Menu

最初は、LiferayのApplications Menuから、以下のパラメータを設定します。

  • Password Policies

    change Required をOFFにする。

  • Configuration > Instance Settings > Users > Default User Associations

    Default User Associations のSitesにSW360を設定する。

  • Configuration > Instance Settings > User Authentication > General

    General をすべてOFFにする。

  • Configuration > System Settings > Third Party

    JQuery/Font Awesome をONにする

Liferay portal description filesのインポート

Liferayのポータル記述ファイル(*.lar)をインポートします。「Home」をクリックしてサイドメニューを開いたら、Publishing > Importを選んでください。

ソースコードのfrontend/configurationに格納されている、以下のファイルをインポートします。ファイル名を参照して、PagesのPublic/Privateの設定してください。

  • Public_Pages_7_3_3_GA4.lar
  • Private_Pages_7_3_3_GA4.lar
larインポート

larファイルのインポートが終わった後、サイドメニューのHomeを選択するとWelcomeページに飛びます。Startボタンを押してトップページが表示されれば成功です!

SW360トップページ画面

Tips

以前に比べ、格段に環境を作成しやすくなっていますが、プロキシ関連で躓くことがあります。認証ありのプロキシなどの設定については、次のサイトが参考になります。

また、透過型プロキシなどで、独自のルート証明書を利用する必要がある場合、couchdbインストール時に証明書エラーが発生します。お試し環境を作成するだけであればscripts/docker-config/install_scripts/install_configure_couchdb.shを修正して、証明書エラーを回避する方向で対応することもできます。内容を次のように書き換えてみてください。

                        
[修正前]
install_couchdb() {
    apt-get install curl -y --no-install-recommends
    curl https://couchdb.apache.org/repo/keys.asc | gpg --dearmor |  tee /usr/share/keyrings/couchdb-archive-keyring.gpg >/dev/null 2>&1
    source /etc/os-release
    echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ ${VERSION_CODENAME} main" ¥
        |  tee /etc/apt/sources.list.d/couchdb.list >/dev/null
    apt-get update
                    
                        
[修正後]
install_couchdb() {
    touch /etc/apt/apt.conf.d/99verify-peer.conf && echo >>/etc/apt/apt.conf.d/99verify-peer.conf "Acquire { https::Verify-Peer false }"
    apt-get install curl -y --no-install-recommends
    curl -k https://couchdb.apache.org/repo/keys.asc | gpg --dearmor |  tee /usr/share/keyrings/couchdb-archive-keyring.gpg >/dev/null 2>&1
    source /etc/os-release
    echo "deb [ allow-insecure=yes trusted=yes signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg ] https://apache.jfrog.io/artifactory/couchdb-deb/ ${VERSION_CODENAME} main" ¥
        |  tee /etc/apt/sources.list.d/couchdb.list >/dev/null
    apt-get update
                    

さいごに

日立ソリューションズではSW360の構築や設定の支援、運用に関するコンサルティングを提供しています。SW360でお困りの方はこちらからお気軽にお問い合わせください。

関連記事

タグ一覧

ジャンル
    キーワード
      作者名

        新着記事

          ソフトウェア部品管理ソリューション コンテンツ一覧

          関連商品・キーワード