Ubuntu 18.04にDcm4chee-arc-lightをインストールする

##目的
DICOMサーバーであるDcm4chee-arc-lightをUbuntu 18.04 LTSにインストールする。

###問題点
以下のリンクを参考に進めていけば標準的な設定で構築できるはずだが、ディストリビューション毎の差異を調整する必要がある。この種のサーバーを必要とする現場には時間に余裕がなく、各々が解決するには無駄が多い。
公式Wiki
https://github.com/dcm4che/dcm4chee-arc-light/wiki/Installation

CentOSでの導入事例
Install DCM4CHEE Archive light 5.x インストールメモ 
http://csdicom.blogspot.com/2019/02/install-dcm4chee-archive-light-5x.html

###解決方法
医療現場での導入が多いと思われるUbuntuへのインストール例を示して、参考にしてもらう。

###使用ソフト
下記のファイル群が最新であったため、これらを使用した。
<dl>
<dt>[dcm4chee-arc-5.19.0-mysql.zip](https://sourceforge.net/projects/dcm4che/files/dcm4chee-arc-light5/)</dt>
<dt>[wildfly-18.0.0.Final.zip](https://wildfly.org/downloads/)</dt>
<dt>[weasis_3.5.4-rc-1_amd64.deb](https://github.com/nroduit/Weasis/releases)</dt>
<dt>[weasis-pacs-connector.war(7.1.1)](https://sourceforge.net/projects/dcm4che/files/Weasis/weasis-pacs-connector/)</dt>
<dt>[ApacheDirectoryStudio-2.0.0.v20180908-M14-linux.gtk.x86_64.tar.gz](https://directory.apache.org/studio/downloads.html)</dt>
</dl>


###インストール

例文中のHOGEは作業をしているアカウントのユーザー名。
ApacheDirectoryStudio以外は全てターミナル内での作業になる。

####MySQLのインストール

`% sudo apt install mysql-server`
`% sudo mysql_secure_installation`

MySQLの設定の参考に
https://onobutaonnsenn.naturum.ne.jp/e3203250.html
https://weblabo.oscasierra.net/mysql-57-init-setup/



####dcm4chee-arc-lightの準備

`% cd /opt`
`% sudo unzip ~/Downloads/dcm4chee-arc-5.19.0-mysql.zip`
`% sudo chown -R HOGE:HOGE /opt/dcm4chee-arc-5.19.0-mysql`
`% sudo ln -s /opt/dcm4chee-arc-5.19.0-mysql /opt/dcm4chee`
`% cd dcm4chee`



####databaseの作成

`% sudo mysql -u root -p<root-password>`
`mysql> create database pacsdb;`
`mysql> grant all on pacsdb.* to 'pacs' identified by 'DBPassWord';`
`mysql> quit`

`% mysql -u pacs -pDBPassWord pacsdb < /opt/dcm4chee/sql/create-mysql.sql`



####OpenLDAPのインストール、設定

`% sudo apt install slapd ldap-utils`

設定時に入力するldapのadminパスワードをldap-passとする。

`% sudo systemctl start slapd`
`% sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /opt/dcm4chee/ldap/slapd/dicom.ldif`
`% sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /opt/dcm4chee/ldap/slapd/dcm4che.ldif`
`% sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /opt/dcm4chee/ldap/slapd/dcm4chee-archive.ldif`
`% sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /opt/dcm4chee/ldap/slapd/dcm4chee-archive-ui.ldif`


modify-baseDN.ldif の編集

```modify-baseDN.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=dcm4che,dc=org
-
replace: olcRootDN
olcRootDN: cn=admin,dc=dcm4che,dc=org
-
```

`% sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f modify-baseDN.ldif`
コンソール出力の最終行が
`modifying entry "olcDatabase={1}mdb,cn=config"`
となっていることを確認。

`ldapmodify: invalid format (line 8) entry: "olcDatabase={1}mdb,cn=config"`
がでる場合は、ファイル内の各スペースが半角になっているか、無駄なスペースが入っていないか確認する。

`% slappasswd -s ldap-pass`
で出力された
`{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
を以下のファイルのuserPassword:の後に記載する。

slapd_setup_basic.ldifの作成

```slapd_setup_basic.ldif
dn: dc=dcm4che,dc=org
changetype: add
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Organisation name
dc: dcm4che

dn: cn=admin,dc=dcm4che,dc=org
changetype: add
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```

`% ldapmodify -x -W -D cn=admin,dc=dcm4che,dc=org -H ldapi:/// -f slapd_setup_basic.ldif `



####ApacheDirectoryStudio

`% cd ~/`
`% sudo apt install default-jre libmysql-java`
`% tar xzvf Downloads/ApacheDirectoryStudio-2.0.0.v20180908-M14-linux.gtk.x86_64.tar.gz`
`% ./ApacheDirectoryStudio/ApacheDirectoryStudio &`

参考
https://www.unix-power.net/networking/post-593

以下のパラメーターでサーバーに接続

```
Network Parameter:
    Hostname: localhost
    Port:     389
Authentication Parameter:
    Bind DN or user: cn=admin,dc=dcm4che,dc=org
    Bind password:   ldap-pass
```
![ADS](https://sites.google.com/site/twunji/_/rsrc/1572845562611/dcm4chee-arc-light/Screenshot%20from%202019-11-04%2014-28-28.png?width=600
)
左ツリー・ビューの dc=dcm4che, dc=org を右クリックして現れるコンテキストメニューからimport→LDIF import...で以下のファイルをインポートする。init-baseDN.ldifは必要ないようだ。

`/opt/dcm4chee/ldap/init-config.ldif`
`/opt/dcm4chee/ldap/default-config.ldif`
`/opt/dcm4chee/ldap/default-ui-config.ldif`
`/opt/dcm4chee/ldap/add-vendor-data.ldif`


####WildFly

`% cd /opt`
`% sudo unzip ~/Downloads/wildfly-18.0.0.Final.zip`
`% sudo chown -R HOGE:HOGE /opt/wildfly-18.0.0.Final`
`% sudo ln -s /opt/wildfly-18.0.0.Final /opt/wildfly`

`% cp -r /opt/dcm4chee/configuration/dcm4chee-arc /opt/wildfly/standalone/configuration`
`% cp /opt/wildfly/standalone/configuration/standalone-full.xml /opt/wildfly/standalone/configuration/dcm4chee-arc.xml`

`% cd /opt/wildfly`
`% unzip /opt/dcm4chee/jboss-modules/dcm4che-jboss-modules-5.19.0.zip`
`% unzip /opt/dcm4chee/jboss-modules/jai_imageio-jboss-modules-1.2-pre-dr-b04.zip`
`% unzip /opt/dcm4chee/jboss-modules/jclouds-jboss-modules-2.1.2-noguava.zip`
`% unzip /opt/dcm4chee/jboss-modules/ecs-object-client-jboss-modules-3.0.0.zip`
`% unzip /opt/dcm4chee/jboss-modules/jdbc-jboss-modules-1.0.0-mysql.zip`



mysql-connector-java

`% cp /usr/share/java/mysql-connector-java-5.1.45.jar /opt/wildfly/modules/com/mysql/main/`

/opt/wildfly/modules/com/mysql/main/module.xmlの編集

``` /opt/wildfly/modules/com/mysql/main/module.xml
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-5.1.45.jar"/>
</resources>

<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
```

/opt/wildfly/standalone/configuration/dcm4chee-arc/ldap.propertiesの編集
`java.naming.security.credentials`をldapのadminパスワードに変更する。

``` /opt/wildfly/standalone/configuration/dcm4chee-arc/ldap.properties
java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
java.naming.ldap.attributes.binary=dicomVendorData
java.naming.provider.url=ldap://localhost:389/dc=dcm4che,dc=org
java.naming.security.principal=cn=admin,dc=dcm4che,dc=org
java.naming.security.credentials=ldap-pass
```

別のターミナルで以下のコマンドを入力しwildflyを立ち上げる。
`% /opt/wildfly/bin/standalone.sh -c dcm4chee-arc.xml`


/opt/dcm4chee/cli/add-data-source-mysql.cliの編集

``` /opt/dcm4chee/cli/add-data-source-mysql.cli
/subsystem=datasources/jdbc-driver=mysql:add(driver-module-name=com.mysql,driver-name=mysql)
data-source add --name=pacsds --driver-name=mysql --jndi-name=java:/PacsDS \
--connection-url=jdbc:mysql://localhost:3306/pacsdb?useSSL=false&requireSSL=false \
--user-name=pacs --password=DBPassWord
```

元のコンソールで以下のコマンドを入力する
`% /opt/wildfly/bin/jboss-cli.sh -c --file=/opt/dcm4chee/cli/add-data-source-mysql.cli`
`% /opt/wildfly/bin/jboss-cli.sh -c --file=/opt/dcm4chee/cli/add-jms-queues.cli`

JBossのクライアントに入る
`% /opt/wildfly/bin/jboss-cli.sh -c`

クライアント内で以下のコマンドを実行する。

```
[standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:undefine-attribute(name=hung-task-threshold)
[standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=long-running-tasks,value=true)
[standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=core-threads,value=2)
[standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=max-threads,value=100)
[standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=queue-length,value=0)
[standalone@localhost:9990 /] /subsystem=ee/managed-scheduled-executor-service=default:undefine-attribute(name=hung-task-threshold)
[standalone@localhost:9990 /] /subsystem=ee/managed-scheduled-executor-service=default:write-attribute(name=long-running-tasks,value=true)
[standalone@localhost:9990 /] /subsystem=ee/managed-scheduled-executor-service=default:write-attribute(name=core-threads,value=2)
[standalone@localhost:9990 /] deploy /opt/dcm4chee/deploy/dcm4chee-arc-ear-5.19.0-mysql.ear
[standalone@localhost:9990 /] quit
```
deployがエラーなく終了すれば、ブラウザーで
http://localhost:8080/dcm4chee-arc/ui2
にアクセスできる。
![ui2](https://sites.google.com/site/twunji/_/rsrc/1572852622600/dcm4chee-arc-light/Screenshot%20from%202019-11-04%2016-27-13.png?width=600
)

別のターミナルで立ち上げてあったwildflyをCtrl+cで終了させておく。



####systemdへの登録
`% sudo useradd wildfly`


/etc/passwdの編集

``` /etc/passwd
wildfly:x:997:998::/opt/wildfly:/sbin/nologin
```
wildflyでログインできないようにしておく。

`% sudo mkdir /etc/wildfly`
`% sudo cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf /etc/wildfly/`

/etc/wildfly/wildfly.confの編集

``` /etc/wildfly/wildfly.conf
    # The configuration you want to run
    WILDFLY_CONFIG=dcm4chee-arc.xml
    # The mode you want to run
    WILDFLY_MODE=standalone
    # The address to bind to
    WILDFLY_BIND=0.0.0.0
```

`% sudo cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/wildfly.service`
`% sudo cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/`
`% cd /opt`
`% sudo chown -R wildfly:wildfly wildfly-18.0.0.Final`
`% sudo chown -R wildfly:wildfly wildfly`
`% sudo chown -R wildfly:wildfly dcm4chee-arc-5.19.0-mysql`
`% sudo chown -R wildfly:wildfly dcm4chee`

`% sudo systemctl enable wildfly`
`% sudo systemctl start wildfly`

でdcm4chee-arc-lightサーバーを起動することができる。
必要なAEを登録することで使用可能となる。
ui2画面で
Menu > Configuration > AE List > Registaer new application entity (+ボタン)


サーバーとしてきちんと使いたいときは
http://csdicom.blogspot.com/2019/02/install-dcm4chee-archive-light-5x.html
の「保存場所の変更」「自動実行」を参考に調整するといいかと。



####既存のdcmファイルを登録

使い慣れているので、ここではDCMTKのdcmsendを使う。
`% sudo apt install dcmtk`

```
Hostname : localhost
Port : 104
AE Title : DCMSEND
```
上記のパラメーターでAEを登録すれば、下記コマンドで送ることができる。

`dcmsend  -v +v -aet DCMSEND -aec DCM4CHEE localhost 11112 *.dcm`



####weasis
ui2画面で
Menu > Configuration > Devices > dcm4chee-arc > Device Extensions > Archive Device > Attributes

Invoke Image Display Patient URL
`weasis://$dicom:rs --url "http://HOSTNAME:8080/dcm4chee-arc/aets/DCM4CHEE/rs" -r "&patientID={}" --query-ext "&includedefaults=false" --
accept-ext="transfer-syntax=*"&target=_self`

Invoke Image Display Study URL
`weasis://$dicom:rs --url "http://HOSTNAME:8080/dcm4chee-arc/aets/DCM4CHEE/rs" -r "&studyUID={}" --query-ext "&includedefaults=false" --
accept-ext="transfer-syntax=*"&target=_self`

/opt/wildfly/bin/add-user.shを実行しManagement Userを追加。http://localhost:9990/ のHAL Management Consoleに入れるようにしておく。
Deployments > Deploy an Application > add からweasis-pacs-connector.warをDeployした後ui2を再読込すると、眼球のアイコン Open study in the viewerが出現する。

各クライアントにWeasisをインストールすれば、閲覧可能となる。
`% sudo dpkg -i ~/Downloads/weasis_3.5.4-rc-1_amd64.deb`

この記事は
https://sites.google.com/site/twunji/dcm4chee-arc-light
を再編集したものです。

終了




2020/10/11
[Ubuntu 18.04のDcm4chee-arc-lightをアップグレードする](https://qiita.com/twunji/items/0e58fd88e03656c43950)
続き