---
title: Dcm4chee PACS Server 5.29.1架設筆記
tags: CyLab
description: dcm4chee PACS Server架設筆記,分為使用Docker架設與在Local端直接架設兩種方法
image: https://avatars.githubusercontent.com/u/1788145?s=200&v=4
---
{%hackmd theme-dark %}
# Dcm4chee PACS Server 5.29.1架設筆記
## Table of Contents
[TOC]
## 使用Docker架設
### References
+ https://github.com/dcm4che/dcm4chee-arc-light/wiki/Run-minimum-set-of-archive-services-on-a-single-host#use-docker-compose
### `docker-compose.yml`
```yaml=
version: "3"
services:
ldap:
image: dcm4che/slapd-dcm4chee:2.6.3-29.1
logging:
driver: json-file
options:
max-size: "10m"
ports:
- "389:389"
env_file: docker-compose.env
volumes:
- /var/local/dcm4chee-arc/ldap:/var/lib/openldap/openldap-data
- /var/local/dcm4chee-arc/slapd.d:/etc/openldap/slapd.d
db:
image: dcm4che/postgres-dcm4chee:14.5-29
logging:
driver: json-file
options:
max-size: "10m"
ports:
- "5432:5432"
env_file: docker-compose.env
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/local/dcm4chee-arc/db:/var/lib/postgresql/data
arc:
image: dcm4che/dcm4chee-arc-psql:5.29.1
logging:
driver: json-file
options:
max-size: "10m"
ports:
- "8080:8080"
- "8443:8443"
- "9990:9990"
- "9993:9993"
- "11112:11112"
- "2762:2762"
- "2575:2575"
- "12575:12575"
env_file: docker-compose.env
environment:
WILDFLY_CHOWN: /opt/wildfly/standalone /storage
WILDFLY_WAIT_FOR: ldap:389 db:5432
depends_on:
- ldap
- db
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/local/dcm4chee-arc/wildfly:/opt/wildfly/standalone
- /var/local/dcm4chee-arc/storage:/storage
```
### `docker-compose.env`
```yaml=
STORAGE_DIR=/storage/fs1
POSTGRES_DB=pacsdb
POSTGRES_USER=pacs
POSTGRES_PASSWORD=pacs
```
### 創建並啟動指令
:::info
在`docker-compose.yml`與`docker-compose.env`存放的目錄底下執行以下指令
:::
```bash=
docker-compose -p dcm4chee up -d
```
### 停止/啟動指令
```bash=
docker-compose -p dcm4chee stop
docker-compose -p dcm4chee start
```
### 刪除指令
```bash=
docker-compose -p dcm4chee down
```
### 伺服器存取網址
#### The received images should show up in the UI of the Archive at
+ http://localhost:8080/dcm4chee-arc/ui2
or
+ https://localhost:8443/dcm4chee-arc/ui2
---
## 在Windows Local端使用binary files架設
### 架設環境與選用套件資訊
+ OS: Windows10 Pro 22H2 19045.2486
:::warning
**注意:** Windows與MacOS因為壓縮影像相關的模組會無法執行,因此安裝好後可能會有部分功能無法使用,詳情參閱[**官網文件備份內的說明**](https://hackmd.io/@LuckyPig/dcm4chee-arc-light-5291_local-install-doc#Windows-amp-MacOS-warning本行為我自行加的註解),**但仍需照常安裝JAI Image IO 1.2模組,否則dcm4chee後端無法正常部署**
+ **20230201實測於原生Windows Server2016 Local環境安裝成功**

+ **估計只要使用Windows Server2016以上的版本都可以直接參照官方手冊安裝在本地端** :smile: :smile_cat: :smiley:
+ **20230202於Windows11 Pro 22H2 Local安裝成功**,官方文件的警示可能有誤!
+ **20230203於Windows10 Pro 21H1 Local安裝成功,排除無法在Windows環境架設dcm4chee的可能性,但是官方的警示仍須注意**,在Windows環境運行dcm4chee**可能無法使用內建的影像壓縮功能**
:::
+ Binary Package: [dcm4chee-arc-5.29.1-mysql](https://sourceforge.net/projects/dcm4che/files/dcm4chee-arc-light5/5.29.1/)
+ JDK: [jdk-17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
+ MariaDB: 10.4.27 (using [XAMPP](https://www.apachefriends.org/))
+ [OpenLDAP](https://www.maxcrc.de/download/): 2.4.49 [直接下載該版本的Windows 64bits安裝包](https://www.maxcrc.de/wp-content/uploads/2020/04/OpenLDAPforWindows_x64.zip)
+ [Wildfly-26.1.2.Final](https://github.com/wildfly/wildfly/releases/download/26.1.2.Final/wildfly-26.1.2.Final.zip)
+ [Apache Directory Studio 2.0.0-M17](http://directory.apache.org/studio/downloads.html)
### DCM4CHEE 5.29.1 Local安裝手冊完整備份
+ https://hackmd.io/@LuckyPig/dcm4chee-arc-light-5291_local-install-doc
:::info
**重要!**
文件中提到的 **$DCM4CHEE_ARC** (Linux)或是 **%DCM4CHEE_ARC%** (Windows)
就是指**下載的dcm4chee Binary Package解壓縮後的資料夾路徑**
例如: 我下載 `dcm4chee-arc-5.29.1-mysql.zip`
解壓縮後放在`C:/Services/dcm4chee-arc-5.29.1-mysql`,這個路徑就是我的 %DCM4CHEE_ARC%
**$WILDFLY_HOME 與 %WILDFLY_HOME%也是相同的邏輯**
:::
### OpenLDAP Server架設紀錄
建議選用OpenLDAP,有如下圖的安裝引導介面(我已經安裝好了,所以選項不同於安裝時)
#### [Windows版OpenLDAP官網](https://www.maxcrc.de/download/): 2.4.49
[也可以點我直接下載該版本的Windows 64bits安裝包](https://www.maxcrc.de/wp-content/uploads/2020/04/OpenLDAPforWindows_x64.zip)
除了安裝路徑建議改為 `C:\Program Files\OpenLDAP` 外
其餘安裝設定都建議直接使用預設值

**另外值得注意的是設定dcm4chee OpenLDPA時文件有提供兩種方式可任選**
我建議直接使用[**OpenLDAP with slapd.conf configuration file**](https://hackmd.io/@LuckyPig/dcm4chee-arc-light-5291_local-install-doc#-OpenLDAP-with-slapdconf-configuration-file)
只需要修改config檔案和複製 %DCM4CHEE_ARC% 內含的設定檔即可
:::warning
**成功匯入設定檔後 記得重新啟動OpenLDPA Server的服務**

**點選右鍵 -> 重新啟動**
:::
### 導入dcm4chee預設LDAP設定檔紀錄
#### 這部分對應到官方文件中[Import default configuration into LDAP Server](https://hackmd.io/@LuckyPig/dcm4chee-arc-light-5291_local-install-doc#-Import-default-configuration-into-LDAP-Server)的章節
:::info
主要針對[**Apache Directory Studio 2.0.0**](http://directory.apache.org/studio/downloads.html)的操作進行說明,以下操作步驟都對應到官方文件中的步驟標號,我**只挑比較需要注意的說明**,因此跳號是正常的
:::
#### 1.新增連線LDAP連線


上下兩張圖的設定就是按照[官方文件的預設值](https://hackmd.io/@LuckyPig/dcm4chee-arc-light-5291_local-install-doc#-Import-default-configuration-into-LDAP-Server),如果你有修改再依情況調整

其餘設定直接使用Apache Directory Studio提供的預設值即可

好了之後對該連線設定圖示快速點兩下即可連線至OpenLDPA Server

#### 2.修改預設值
如果你有把dcm4chee提供的預設值改掉,需參照官方文件進行設定,不然這部分可以直接省略
#### 3~5.使用Apache Directory Studio的LDIF匯入功能
於已連線狀態下再參照下圖點選


**點選Next之後選擇要匯入的LDIF檔案** 重複操作直到把3~5點的檔案都順利匯入
#### 6.匯入vendor-data.zip
文件有提供a、b兩個選項可任選
**我是使用方法a:繼續透過[Apache Directory Studio](https://directory.apache.org/studio/)操作較為方便**
值得注意的是,必須先點選進入到dcm4chee-arc device level(**如下圖所示**)

**然後參閱下圖點選New Attribute的圖示(這很重要,我當初找很久)**

接著照官方文件的設定為dicomVendorData後,**直接點選Finish**

會跳出如下圖的視窗,這時候再選擇Load Data去找到
`$DCM4CHEE_ARC/ldap/vendor-data.zip` 匯入即可

#### 7.我是用dcm4chee的預設值,所以直接跳過
### 資料庫設定檔`add-data-source-mysql.cli`
#### 檔案路徑`%DCM4CHEE_ARC%/cli/`
:::warning
**請先參照以下說明修改好設定檔後再往下設定Wildfly**
**此部分沒有設定好後端無法正常部屬及啟動**
:::
#### 官方範例設定
```
/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://<host>:3306/<database-name>?serverTimezone=<timezone> \
--user-name=<user-name> --password=<user-password>
```
#### 我的設定範例
```
/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://127.0.0.1:3306/dcm4chee_pacs?serverTimezone=Asia/Taipei \
--user-name=dcm4chee_local --password=<密碼>
```
#### 務必要確定提供的資料庫可正常連線,且DB帳號具有該資料庫的完整權限
### 設定WildFly紀錄
:::danger
**注意! 建議跳過**[**官方文件在Setup WildFly**](https://hackmd.io/@LuckyPig/dcm4chee-arc-light-5291_local-install-doc#-Setup-WildFly) 的**步驟10**,改為使用**步驟11**匯入`add-data-source-mysql.cli`,藉此來完成資料庫連線資訊的設定,因為步驟10的設定指令有包含在上述的檔案中,**若匯入步驟10的設定會導致步驟11出現錯誤**
首次於Windows環境安裝時,我就是因為這步驟沒有成功匯入,加上官方文件有寫到Windows環境有不支援的相依套件,**因而誤以為無法在Windows環境下部署dcm4chee**
**其中`%DCM4CHEE_ARC%/cli/add-data-source-mysql.cli`這個檔案非常關鍵!**
**請一定要反覆檢查與測試提供的連線資訊是否正確!**
:::
:::info
因為官網文件的步驟都寫得蠻詳細的,因此我**簡單列出以下幾項比較會常用的指令以及需要修改檔案路徑的指令**,和關於上述問題在Windows下出現錯誤訊息
:::
+ **啟動WildFly**
```
%WILDFLY_HOME%\bin\standalone.bat -c dcm4chee-arc.xml
```
+ **進入jboss-cli互動模式**
```
%WILDFLY_HOME%\bin\jboss-cli.bat -c
```
+ **匯入資料庫設定資訊**(以下路徑的檔案有更改過,需依照自己的檔案位置修改)
```
%WILDFLY_HOME%\bin\jboss-cli.bat -c --file=C:\Services\dcm4chee\dcm4chee-arc-5.29.1-mysql\cli\add-data-source-mysql.cli
```
+ **更改JBoss管理參數**(第14點Enable property replacement in deployment descriptors...)
```
%WILDFLY_HOME%\bin\jboss-cli.bat -c --file=C:\Services\dcm4chee\dcm4chee-arc-5.29.1-mysql\cli\adjust-managed-executor.cli
```
+ **需在jboss-cli互動模式下執行-dcm4chee前端介面**
```
deploy C:\Services\dcm4chee\dcm4chee-arc-5.29.1-mysql\deploy\dcm4chee-arc-ui2-5.29.1.war
```
+ **需在jboss-cli互動模式下執行-dcm4chee後端**
```
deploy C:\Services\dcm4chee\dcm4chee-arc-5.29.1-mysql\deploy\dcm4chee-arc-ear-5.29.1-mysql.ear
```
後端於Windows部署,可能會出現錯誤如下
(**此錯誤已證實與資料庫連線有關!**
請參考:https://stackoverflow.com/questions/36345377/unable-to-create-requested-service-org-hibernate-engine-jdbc-env-spi-jdbcenviro)
<details>
<summary>deploy-ear_log-20230201.txt
</summary>
```
C:\Windows\system32>%WILDFLY_HOME%\bin\jboss-cli.bat -c
[standalone@localhost:9990 /] deploy C:\Services\dcm4chee\dcm4chee-arc-5.29.1-mysql\deploy\dcm4chee-arc-ear-5.29.1-mysql.ear
{"WFLYCTL0062: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" =>
{"WFLYCTL0080: Failed services" => {"jboss.persistenceunit.\"dcm4chee-arc-ear-5.29.1-mysql.ear#dcm4chee-arc\"" => "org
.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvi
ronment]
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdb
c.env.spi.JdbcEnvironment]
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect
' not set"}}}}
[standalone@localhost:9990 /]
```
</details>
### 要設定Address Binding或是Port Forwarding才能正常從外部網址存取
:::info
:slightly_smiling_face: **小提醒: 不論是透過哪個方法設定,都要再額外設定Windows防火牆的輸出/入規則,外部才能正常存取**
:::
#### :tada:歡迎贊助筆者一杯或多杯咖啡(Donate)
如果您覺得本篇筆記對您有實質的幫助😊
歡迎考慮贊助在下(LuckyPig)一杯咖啡
If you found this note helpful, it would mean a lot to me (LuckyPig) if you considered buying me a cup of coffee as a way of showing your support and appreciation. Thank you so much! 😊
[](https://paypal.me/luckypig3400?country.x=TW&locale.x=en_US)
#### 方法一:更改Wildfly設定檔to bind any address
開啟以下路徑的設定檔:
`%WILDFLY_HOME%\standalone\configuration\dcm4chee-arc.xml`
找到設定檔中的這段
```xml=
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
```
**並修改為如下的範例設定**
```xml=
<interface name="public">
<any-address/>
</interface>
```
> REF: https://stackoverflow.com/questions/31716540/configuring-wildfly-to-listen-any-address
#### 方法二:以系統管理員權限開啟CMD或Powershell來執行以下指令
```bash=
netsh interface portproxy show v4tov4
# 用0.0.0.0來允許任何外部連線,亦可指定要綁定的外部ip
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=127.0.0.1
# 8080為dcm4chee WebUI, 11112為傳輸影像的port
netsh interface portproxy add v4tov4 listenport=11112 listenaddress=0.0.0.0 connectport=11112 connectaddress=127.0.0.1
netsh interface portproxy show v4tov4
# 缺點:重啟Wildfly時需刪除Port Forwarding設定,才能正常啟動
netsh interface portproxy delete v4tov4 listenport=8080 listenaddress=0.0.0.0
netsh interface portproxy delete v4tov4 listenport=11112 listenaddress=0.0.0.0
```
> REF1: https://youtu.be/ACjlvzw4bVE
> REF2: https://stackoverflow.com/questions/11525703/port-forwarding-in-windows
---
## 在Ubuntu Desktop Local端使用binary files架設
+ [Ubuntu Install OpenJDK17](https://techviewleo.com/install-java-openjdk-on-ubuntu-linux/)
+ [ubuntu Install MySQL](https://andy6804tw.github.io/2019/01/29/ubuntu-mysql-setting/)
+ [使用Curl指令下載所需檔案](https://blog.techbridge.cc/2019/02/01/linux-curl-command-tutorial/)
+ [Start, Stop or Restart Services in Ubuntu](https://vitux.com/how-to-start-stop-or-restart-services-in-ubuntu/)
+ [Install OpenLDAP 較推薦(apt install slapd)](https://computingforgeeks.com/install-and-configure-openldap-server-ubuntu/)
+ [Install OpenLDAP (tar.gz file)](https://askubuntu.com/questions/25961/how-do-i-install-a-tar-gz-or-tar-bz2-file)
+ [Starting OpenLDAP (slapd)](https://www.openldap.org/doc/admin26/runningslapd.html)
+ [Extract tar.gz files in Ubuntu](https://askubuntu.com/questions/25347/what-command-do-i-need-to-unzip-extract-a-tar-gz-file)
+ [Unzip zip files in Ubuntu](https://askubuntu.com/questions/86849/how-to-unzip-a-zip-file-from-the-terminal)
+ [Set environment variables in Ubuntu](https://askubuntu.com/questions/730/how-do-i-set-environment-variables)
### 安裝JDK及MySQL與下載所需安裝包
```bash=
sudo apt update
sudo apt-get update
sudo apt install openjdk-17-jdk -y
java --version
sudo apt-get install mysql-server mysql-client libmysqlclient-dev -y
sudo apt-get install net-tools -y
sudo netstat -tap | grep mysql
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
# comment this line: bind-address = 127.0.0.1
sudo cat /etc/mysql/debian.cnf
# use this command to see your MySQL ACC&PWD
mysql -u debian-sys-maint -p
# test MySQL login
sudo service mysql restart
cd ~/Downloads
sudo apt install curl -y
curl -o wildfly-26.1.2.Final.zip -L https://github.com/wildfly/wildfly/releases/download/26.1.2.Final/wildfly-26.1.2.Final.zip
curl -o ApacheDirectoryStudio-2.0.0.v20210717-M17-linux.gtk.x86_64.tar.gz https://dlcdn.apache.org/directory/studio/2.0.0.v20210717-M17/ApacheDirectoryStudio-2.0.0.v20210717-M17-linux.gtk.x86_64.tar.gz
curl -o dcm4chee-arc-5.29.1-mysql.zip -L https://sourceforge.net/projects/dcm4che/files/dcm4chee-arc-light5/5.29.1/dcm4chee-arc-5.29.1-mysql.zip/download
# 上方三行下載DCM4CHEE所需安裝包
tar -xvzf ApacheDirectoryStudio-2.0.0.v20210717-M17-linux.gtk.x86_64.tar.gz
# 解壓縮ApacheDirectoryStudio
unzip dcm4chee-arc-5.29.1-mysql.zip
unzip wildfly-26.1.2.Final.zip
export DCM4CHEE_ARC=/home/user/Downloads/dcm4chee-arc-5.29.1-mysql
# 設定環境變數$DCM4CHEE_ARC(根據安裝包解壓後的實際路徑設定)
export WILDFLY_HOME=/home/user/Downloads/wildfly-26.1.2.Final
# 設定環境變數$WILDFLY_HOME(根據安裝包解壓後的實際路徑設定)
~/Downloads/ApacheDirectoryStudio/ApacheDirectoryStudio
# Execute ApacheDirectoryStudio
```
### 匯入MySQL資料庫(需自行查閱ubuntu內的mysql預設帳號密碼)
```bash=
sudo cat /etc/mysql/debian.cnf
# use this command to see your MySQL ACC&PWD
mysql -u debian-sys-maint -p
# Enter MySQL PWD
mysql> create database dcm4chee_pacs;
mysql> grant all PRIVILEGES on dcm4chee_pacs.* to 'debian-sys-maint'@'localhost';
mysql> quit
mysql -u debian-sys-maint -p dcm4chee_pacs < $DCM4CHEE_ARC/sql/mysql/create-mysql.sql
```
### 安裝OpenLDAP(slapd)與修改預設安裝設定檔
安裝過程中的密碼建議使用[官網文件內slapd.conf內所記載的](https://hackmd.io/@LuckyPig/dcm4chee-arc-light-5291_local-install-doc#-OpenLDAP-with-slapdconf-configuration-file)
```bash=
# 安裝OpenLDAP
sudo apt update
sudo apt -y install slapd ldap-utils
sudo slapcat
# 重新設定OpenLDAP,參考:https://magiclen.org/ubuntu-server-ldap/
sudo dpkg-reconfigure slapd
# 設定內容如下
# DNS domain name:dcm4che.org
# Organization name:dcm4che
# 密碼參考官網文件
# MDB -> Ok -> Yes -> Yes
sudo slapcat
# 查看OpenLDAP的設定資料是否正確
sudo service slapd restart
service --status-all
# 確定OpenLDAP(slapd)服務已正常啟動
```
### 匯入dcm4chee的OpenLDAP設定檔
#### 採用[官網文件的dynamic runtime configuration](https://hackmd.io/@LuckyPig/dcm4chee-arc-light-5291_local-install-doc#-OpenLDAP-with-dynamic-runtime-configuration)方法
```bash=
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f $DCM4CHEE_ARC/ldap/slapd/dicom.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f $DCM4CHEE_ARC/ldap/slapd/dcm4che.ldif
tr -d \\r < $DCM4CHEE_ARC/ldap/slapd/dcm4chee-archive.ldif | sudo ldapadd -Y EXTERNAL -H ldapi:///
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f $DCM4CHEE_ARC/ldap/slapd/dcm4chee-archive-ui.ldif
sudo service slapd restart
# 完成上方官網文件的那四行後記得重啟OpenLDAP
~/Downloads/ApacheDirectoryStudio/ApacheDirectoryStudio
# 執行Apache Directory Studio來匯入剩餘設定檔
```
#### Apache Directory Studio連線設定
```
Network Parameter:
Hostname: localhost
Port: 389
Authentication Parameter:
Bind DN or user: cn=admin,dc=dcm4che,dc=org
Bind password: secret
Browser Options:
Base DN: dc=dcm4che,dc=org
```
#### 透過Apache Directory Studio匯入其餘設定檔的操作步驟
+ 請參閱本文內的[導入dcm4chee預設LDAP設定檔紀錄](https://hackmd.io/@LuckyPig/dcm4chee-install-note#導入dcm4chee預設LDAP設定檔紀錄)章節
### Install modules and Setup WildFly
```bash=
export DCM4CHEE_ARC=/home/user/Downloads/dcm4chee-arc-5.29.1-mysql
# 設定環境變數$DCM4CHEE_ARC(根據安裝包解壓後的實際路徑設定)
export WILDFLY_HOME=/home/user/Downloads/wildfly-26.1.2.Final
# 設定環境變數$WILDFLY_HOME(根據安裝包解壓後的實際路徑設定)
cp -r $DCM4CHEE_ARC/configuration $WILDFLY_HOME/standalone
cd $WILDFLY_HOME/standalone/configuration
cp standalone.xml dcm4chee-arc.xml
cd $WILDFLY_HOME
unzip $DCM4CHEE_ARC/jboss-modules/dcm4che-jboss-modules-5.29.1.zip
cd $WILDFLY_HOME
unzip $DCM4CHEE_ARC/jboss-modules/jai_imageio-jboss-modules-1.2-pre-dr-b04.zip
cd $WILDFLY_HOME
unzip $DCM4CHEE_ARC/jboss-modules/jclouds-jboss-modules-2.5.0-noguava.zip
cd $WILDFLY_HOME
unzip $DCM4CHEE_ARC/jboss-modules/ecs-object-client-jboss-modules-3.0.0.zip
cd ~/Downloads
curl -o keycloak-wildfly-adapter-dist-15.0.0.zip -L https://github.com/keycloak/keycloak/releases/download/15.0.0/keycloak-oidc-wildfly-adapter-15.0.0.zip
cd $WILDFLY_HOME
unzip ~/Downloads/keycloak-wildfly-adapter-dist-15.0.0.zip
cd $WILDFLY_HOME
unzip $DCM4CHEE_ARC/jboss-modules/jdbc-jboss-modules-mysql-8.0.29.zip
$WILDFLY_HOME/bin/standalone.sh -c dcm4chee-arc.xml
# 驗證JBoss是否順利啟動
```
### New Terminal for configuring JBoss(WildFly)
```bash=
gedit $DCM4CHEE_ARC/cli/add-data-source-mysql.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/dcm4chee_pacs?serverTimezone=Asia/Taipei \
--user-name=debian-sys-maint --password=<user-password>
```
##### MySQL Connection serverTimezone設定參考
+ https://stackoverflow.com/questions/7605953/how-to-change-mysql-timezone-in-a-database-connection-using-java
+ https://ithelp.ithome.com.tw/articles/10217691
+ [Wiki Asia/Taipei](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#TAIPEI)
#### 把剛設定好的cli檔案匯入並繼續完成其餘WildFly的設定
```bash=
export DCM4CHEE_ARC=/home/user/Downloads/dcm4chee-arc-5.29.1-mysql
# 設定環境變數$DCM4CHEE_ARC(根據安裝包解壓後的實際路徑設定)
export WILDFLY_HOME=/home/user/Downloads/wildfly-26.1.2.Final
# 設定環境變數$WILDFLY_HOME(根據安裝包解壓後的實際路徑設定)
$WILDFLY_HOME/bin/jboss-cli.sh -c --file=$DCM4CHEE_ARC/cli/add-data-source-mysql.cli
$WILDFLY_HOME/bin/jboss-cli.sh -c --file=$DCM4CHEE_ARC/cli/adjust-managed-executor.cli
$WILDFLY_HOME/bin/jboss-cli.sh -c
[standalone@localhost:9990 /] :reload
[standalone@localhost:9990 /] /subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=max-post-size,value=10000000000)
[standalone@localhost:9990 /] /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=max-post-size,value=10000000000)
[standalone@localhost:9990 /] :reload
```
#### 最後Deploy(部署)Dcm4chee前後端
```bash=
$WILDFLY_HOME/bin/jboss-cli.sh -c
[standalone@localhost:9990 /] deploy $DCM4CHEE_ARC/deploy/dcm4chee-arc-ear-5.29.1-mysql.ear
[standalone@localhost:9990 /] deploy $DCM4CHEE_ARC/deploy/dcm4chee-arc-ui2-5.29.1.war
```
#### :tada:歡迎贊助筆者一杯或多杯咖啡(Donate)
如果您覺得本篇筆記對您有實質的幫助😊
歡迎考慮贊助在下(LuckyPig)一杯咖啡
If you found this note helpful, it would mean a lot to me (LuckyPig) if you considered buying me a cup of coffee as a way of showing your support and appreciation. Thank you so much! 😊
[](https://paypal.me/luckypig3400?country.x=TW&locale.x=en_US)
**可參考官網文件驗證部署狀態的資訊:**
+ https://hackmd.io/@LuckyPig/dcm4chee-arc-light-5291_local-install-doc#最後在此部署與測試Dcm4chee前後端本行為我自行加的註解
**Verify that the archive web UI is accessible** at [http://localhost:8080/dcm4chee-arc/ui2](http://localhost:8080/dcm4chee-arc/ui2)
##### Undeploy DCM4CHEE Archive Backend and UI at any time using JBoss CLI, e.g.:
```bash=
$WILDFLY_HOME/bin/jboss-cli.sh -c
[standalone@localhost:9990 /] undeploy dcm4chee-arc-ear-5.29.1-psql.ear
[standalone@localhost:9990 /] undeploy dcm4chee-arc-ui2-5.29.1.war
```
### 更改Wildfly設定檔to bind any address才能正常從外部網址存取
開啟以下路徑的設定檔:
`$WILDFLY_HOME\standalone\configuration\dcm4chee-arc.xml`
找到設定檔中的這段
```xml=
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
```
**並修改為如下的範例設定**
```xml=
<interface name="public">
<any-address/>
</interface>
```
> REF: https://stackoverflow.com/questions/31716540/configuring-wildfly-to-listen-any-address
---
## 在WSL2上架設(MySQL與OpenLDAP安裝在WSL2內部)
### 推薦使用WSL2(Windows Subsystem for Linux 2)
+ [Run Linux GUI apps on the Windows Subsystem for Linux](https://learn.microsoft.com/en-us/windows/wsl/tutorials/gui-apps)
:::info
因為會使用到需要透過GUI應用程式設定的部分(Apache Directory Studio)
而且OpenLDAP只能在WSL2上執行
**如果需要把OpenLDAP安裝在WSL內的話,記得要把WSL升級為WSL2**
:::
:::warning
如果**想要把MySQL與OpenLDAP安裝在Windows端** (Windows Host)
可以直接參閱本文[**在WSL(v1)上架設的操作紀錄**](#在WSLv1上架設使用Windows-Host的XAMPP-MySQL與OpenLDAP)
(個人實測後發現**WSL2無法透過127.0.0.1存取到Windows Host的MySQL與OpenLDAP**,需透過**虛擬網卡分配的ip**存取,我**已經把詳細說明附註在WSL(v1)的安裝說明中**)
:::
### 安裝與設定JDK、MySQL、OpenLDAP到啟動Wildfly
```bash=
sudo apt update
sudo apt-get update
sudo apt install openjdk-17-jdk -y
java --version
sudo apt-get install mysql-server mysql-client libmysqlclient-dev -y
sudo apt-get install net-tools -y
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
# comment this line: bind-address = 127.0.0.1
sudo service mysql restart
sudo netstat -tap | grep mysql
sudo cat /etc/mysql/debian.cnf
# use this command to see your MySQL ACC&PWD
mysql -h 127.0.0.1 -u debian-sys-maint -p
# test MySQL login in WSL: https://stackoverflow.com/questions/11657829/error-2002-hy000-cant-connect-to-local-mysql-server-through-socket-var-run
mysql> exit
cd /mnt/c
sudo mkdir Services
cd Services
sudo mkdir dcm4chee-wsl
cd dcm4chee-wsl
sudo apt install curl -y
curl -o wildfly-26.1.2.Final.zip -L https://github.com/wildfly/wildfly/releases/download/26.1.2.Final/wildfly-26.1.2.Final.zip
curl -o ApacheDirectoryStudio-2.0.0.v20210717-M17-linux.gtk.x86_64.tar.gz https://dlcdn.apache.org/directory/studio/2.0.0.v20210717-M17/ApacheDirectoryStudio-2.0.0.v20210717-M17-linux.gtk.x86_64.tar.gz
curl -o dcm4chee-arc-5.29.1-mysql.zip -L https://sourceforge.net/projects/dcm4che/files/dcm4chee-arc-light5/5.29.1/dcm4chee-arc-5.29.1-mysql.zip/download
# 上方三行下載DCM4CHEE所需安裝包
tar -xvzf ApacheDirectoryStudio-2.0.0.v20210717-M17-linux.gtk.x86_64.tar.gz
# 解壓縮ApacheDirectoryStudio
sudo apt install unzip -y
unzip dcm4chee-arc-5.29.1-mysql.zip
unzip wildfly-26.1.2.Final.zip
export DCM4CHEE_ARC=/mnt/c/Services/dcm4chee-wsl/dcm4chee-arc-5.29.1-mysql
# 設定環境變數$DCM4CHEE_ARC(根據安裝包解壓後的實際路徑設定)
export WILDFLY_HOME=/mnt/c/Services/dcm4chee-wsl/wildfly-26.1.2.Final
# 設定環境變數$WILDFLY_HOME(根據安裝包解壓後的實際路徑設定)
/mnt/c/Services/dcm4chee-wsl/ApacheDirectoryStudio/ApacheDirectoryStudio
# Execute ApacheDirectoryStudio
sudo cat /etc/mysql/debian.cnf
# use this command to see your MySQL ACC&PWD
mysql -h 127.0.0.1 -u debian-sys-maint -p
# Enter MySQL PWD
mysql> create database dcm4chee_pacs;
mysql> grant all PRIVILEGES on dcm4chee_pacs.* to 'debian-sys-maint'@'localhost';
mysql> quit
sudo service mysql restart
mysql -h 127.0.0.1 -u debian-sys-maint -p dcm4chee_pacs < $DCM4CHEE_ARC/sql/mysql/create-mysql.sql
# 安裝OpenLDAP
sudo apt update
sudo apt -y install slapd ldap-utils
sudo slapcat
# 重新設定OpenLDAP,參考:https://magiclen.org/ubuntu-server-ldap/
sudo dpkg-reconfigure slapd
# 設定內容如下
# DNS domain name:dcm4che.org
# Organization name:dcm4che
# 密碼參考官網文件
# MDB -> Ok -> Yes -> Yes
sudo slapcat
# 查看OpenLDAP的設定資料是否正確
sudo service slapd restart
service --status-all
# 確定OpenLDAP(slapd)服務已正常啟動
# WSL的service顯示好像有異常,可略過
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f $DCM4CHEE_ARC/ldap/slapd/dicom.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f $DCM4CHEE_ARC/ldap/slapd/dcm4che.ldif
tr -d \\r < $DCM4CHEE_ARC/ldap/slapd/dcm4chee-archive.ldif | sudo ldapadd -Y EXTERNAL -H ldapi:///
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f $DCM4CHEE_ARC/ldap/slapd/dcm4chee-archive-ui.ldif
sudo service slapd restart
# 執行Apache Directory Studio來匯入剩餘設定檔
/mnt/c/Services/dcm4chee-wsl/ApacheDirectoryStudio/ApacheDirectoryStudio
# ------------------
# Network Parameter:
# Hostname: localhost
# Port: 389
# Authentication Parameter:
# Bind DN or user: cn=admin,dc=dcm4che,dc=org
# Bind password: secret
# Browser Options:
# Base DN: dc=dcm4che,dc=org
# 透過Apache Directory Studio匯入其餘設定檔的操作步驟:
# https://hackmd.io/@LuckyPig/dcm4chee-install-note#導入dcm4chee預設LDAP設定檔紀錄
# ------------------
cp -r $DCM4CHEE_ARC/configuration $WILDFLY_HOME/standalone
cd $WILDFLY_HOME/standalone/configuration
cp standalone.xml dcm4chee-arc.xml
cd $WILDFLY_HOME
unzip $DCM4CHEE_ARC/jboss-modules/dcm4che-jboss-modules-5.29.1.zip
cd $WILDFLY_HOME
unzip $DCM4CHEE_ARC/jboss-modules/jai_imageio-jboss-modules-1.2-pre-dr-b04.zip
cd $WILDFLY_HOME
unzip $DCM4CHEE_ARC/jboss-modules/jclouds-jboss-modules-2.5.0-noguava.zip
cd $WILDFLY_HOME
unzip $DCM4CHEE_ARC/jboss-modules/ecs-object-client-jboss-modules-3.0.0.zip
cd /mnt/c/Services/dcm4chee-wsl
curl -o keycloak-wildfly-adapter-dist-15.0.0.zip -L https://github.com/keycloak/keycloak/releases/download/15.0.0/keycloak-oidc-wildfly-adapter-15.0.0.zip
cd $WILDFLY_HOME
unzip /mnt/c/Services/dcm4chee-wsl/keycloak-wildfly-adapter-dist-15.0.0.zip
cd $WILDFLY_HOME
unzip $DCM4CHEE_ARC/jboss-modules/jdbc-jboss-modules-mysql-8.0.29.zip
$WILDFLY_HOME/bin/standalone.sh -c dcm4chee-arc.xml
# 驗證JBoss是否順利啟動
```
### 開啟新的WSL Terminal修改要匯入dcm4chee Wildfly的設定檔
```bash=
export DCM4CHEE_ARC=/mnt/c/Services/dcm4chee-wsl/dcm4chee-arc-5.29.1-mysql
# 設定環境變數$DCM4CHEE_ARC(根據安裝包解壓後的實際路徑設定)
export WILDFLY_HOME=/mnt/c/Services/dcm4chee-wsl/wildfly-26.1.2.Final
# 設定環境變數$WILDFLY_HOME(根據安裝包解壓後的實際路徑設定)
gedit $DCM4CHEE_ARC/cli/add-data-source-mysql.cli
```
#### add-data-source-mysql.cli設定參考(連線到WSL內安裝的mysql)
```
/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://127.0.0.1:3306/dcm4chee_pacs?serverTimezone=Asia/Taipei \
--user-name=debian-sys-maint --password=<user-password>
```
### 接續新開啟的WSL設定JBoss(WildFly)與Deploy(部署)Dcm4chee前後端
```bash=
export DCM4CHEE_ARC=/mnt/c/Services/dcm4chee-wsl/dcm4chee-arc-5.29.1-mysql
# 設定環境變數$DCM4CHEE_ARC(根據安裝包解壓後的實際路徑設定)
export WILDFLY_HOME=/mnt/c/Services/dcm4chee-wsl/wildfly-26.1.2.Final
# 設定環境變數$WILDFLY_HOME(根據安裝包解壓後的實際路徑設定)
$WILDFLY_HOME/bin/jboss-cli.sh -c --file=$DCM4CHEE_ARC/cli/add-data-source-mysql.cli
$WILDFLY_HOME/bin/jboss-cli.sh -c --file=$DCM4CHEE_ARC/cli/adjust-managed-executor.cli
$WILDFLY_HOME/bin/jboss-cli.sh -c
[standalone@localhost:9990 /] :reload
[standalone@localhost:9990 /] /subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=max-post-size,value=10000000000)
[standalone@localhost:9990 /] /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=max-post-size,value=10000000000)
[standalone@localhost:9990 /] :reload
# 最後Deploy(部署)Dcm4chee前後端
[standalone@localhost:9990 /] deploy /mnt/c/Services/dcm4chee-wsl/dcm4chee-arc-5.29.1-mysql/deploy/dcm4chee-arc-ear-5.29.1-mysql.ear
[standalone@localhost:9990 /] deploy /mnt/c/Services/dcm4chee-wsl/dcm4chee-arc-5.29.1-mysql/deploy/dcm4chee-arc-ui2-5.29.1.war
```
### 最後於Windows瀏覽器上驗證Dcm4chee安裝結果
**Verify that the archive web UI is accessible** at
[http://localhost:8080/dcm4chee-arc/ui2](http://localhost:8080/dcm4chee-arc/ui2)
#### :tada:歡迎贊助筆者一杯或多杯咖啡(Donate)
如果您覺得本篇筆記對您有實質的幫助😊
歡迎考慮贊助在下(LuckyPig)一杯咖啡
If you found this note helpful, it would mean a lot to me (LuckyPig) if you considered buying me a cup of coffee as a way of showing your support and appreciation. Thank you so much! 😊
[](https://paypal.me/luckypig3400?country.x=TW&locale.x=en_US)
#### 可參考官網文件驗證部署狀態的資訊:
- [https://hackmd.io/@LuckyPig/dcm4chee-arc-light-5291_local-install-doc#最後在此部署與測試Dcm4chee前後端本行為我自行加的註解](https://hackmd.io/@LuckyPig/dcm4chee-arc-light-5291_local-install-doc#%E6%9C%80%E5%BE%8C%E5%9C%A8%E6%AD%A4%E9%83%A8%E7%BD%B2%E8%88%87%E6%B8%AC%E8%A9%A6Dcm4chee%E5%89%8D%E5%BE%8C%E7%AB%AF%E6%9C%AC%E8%A1%8C%E7%82%BA%E6%88%91%E8%87%AA%E8%A1%8C%E5%8A%A0%E7%9A%84%E8%A8%BB%E8%A7%A3)
##### Undeploy DCM4CHEE Archive Backend and UI at any time using JBoss CLI, e.g.:
```
$WILDFLY_HOME/bin/jboss-cli.sh -c
[standalone@localhost:9990 /] undeploy dcm4chee-arc-ear-5.29.1-psql.ear
[standalone@localhost:9990 /] undeploy dcm4chee-arc-ui2-5.29.1.war
```
### 可以撰寫shell script方便啟動dcm4chee(執行WildFly)
```bash=
cd /mnt/c/Services/dcm4chee-wsl
touch startDcm4chee.sh
touch startDcm4chee.bat
```
#### `startDcm4chee.sh`
```bash=
echo Starting DCM4CHEE via WILDFLY......
/mnt/c/Services/dcm4chee-wsl/wildfly-26.1.2.Final/bin/standalone.sh -c dcm4chee-arc.xml
# 根據實際安裝路徑更改啟動指令
```
#### `startDcm4chee.bat`
```bash=
wsl.exe sudo service mysql start
wsl.exe sudo service slapd start
REM WSL的內部服務無法在開機時自行啟動
REM https://superuser.com/questions/1343558/how-to-make-wsl-run-services-at-startup
wsl.exe ./startDcm4chee.sh
REM https://learn.microsoft.com/en-us/windows/wsl/filesystems#run-linux-tools-from-a-windows-command-line
```
#### 在Terminal中`Ctrl`+`C`即可正常關閉dcm4chee
:::warning
**需等待Wildfly關閉的指令順利執行完畢,跳回正常的console才可關閉視窗**
:::
### WSL2透過外部ip存取wsl內部架設的DCM4CHEE(Port Forwarding)
#### 請使用Windows Powershell來完成以下設定
```bash=
# REF: https://youtu.be/ACjlvzw4bVE
netsh interface portproxy show v4tov4
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=192.168.1.165 connectport=8080 connectaddress=$($(wsl hostname -I).Trim());
# 經實測後發現WSL2要forward是127.0.0.1而不是WSL網卡的ip
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=127.0.0.1
# 大神奇啦! 這樣設定就通了!
netsh interface portproxy add v4tov4 listenport=11112 listenaddress=0.0.0.0 connectport=11112 connectaddress=127.0.0.1
netsh interface portproxy show v4tov4
```
> REF: https://youtu.be/ACjlvzw4bVE
#### 刪除WSL Port Forwarding設定
> REF: https://stackoverflow.com/questions/11525703/port-forwarding-in-windows
---
## 在WSL(v1)上架設(使用Windows Host的XAMPP MySQL與OpenLDAP)
:::info
**實測後也可以透過WSL(v1)安裝** :+1:
安裝在WSL(v1),僅有Wildfly會安裝在WSL內部
(MySQL也可以安裝在WSL1內,但我在Windows上有安裝XAMPP因此直接用即可)
:::
### 安裝JDK及MySQL連線工具、下載Dcm4chee安裝包與執行Wildfly
```bash=
sudo apt update
sudo apt-get update
sudo apt install openjdk-17-jdk -y
java --version
# 已經在wsl內安裝mysql-server可以參考下文完整移除mysql
# https://noob.tw/remove-mysql-completely/
# 移除wsl內的mysql-server再安裝mysql-client連線windows的mysql
sudo apt-get install mysql-client -y
# 使用Windows XAMPP的 mysql,因此只安裝mysql-client
sudo apt-get install net-tools -y
mysql -h 127.0.0.1 -u root -p
mysql> exit
cd /mnt/c
sudo mkdir Services
cd Services
sudo mkdir dcm4chee-wsl
cd dcm4chee-wsl
sudo apt install curl -y
curl -o wildfly-26.1.2.Final.zip -L https://github.com/wildfly/wildfly/releases/download/26.1.2.Final/wildfly-26.1.2.Final.zip
curl -o dcm4chee-arc-5.29.1-mysql.zip -L https://sourceforge.net/projects/dcm4che/files/dcm4chee-arc-light5/5.29.1/dcm4chee-arc-5.29.1-mysql.zip/download
# 上方兩行下載DCM4CHEE所需安裝包
sudo apt install unzip -y
unzip dcm4chee-arc-5.29.1-mysql.zip
unzip wildfly-26.1.2.Final.zip
export DCM4CHEE_ARC=/mnt/c/Services/dcm4chee-wsl/dcm4chee-arc-5.29.1-mysql
# 設定環境變數$DCM4CHEE_ARC(根據安裝包解壓後的實際路徑設定)
export WILDFLY_HOME=/mnt/c/Services/dcm4chee-wsl/wildfly-26.1.2.Final
# 設定環境變數$WILDFLY_HOME(根據安裝包解壓後的實際路徑設定)
# 需自行下載Windows版的ApacheDirectoryStudio
# https://directory.apache.org/studio/download/download-windows.html
# 自行透過Windows XAMPP查看預設mysql帳密(通常是root)
mysql -h 127.0.0.1 -u root
mysql> create database dcm4chee_pacs;
mysql> grant all PRIVILEGES on dcm4chee_pacs.* to 'root'@'localhost';
mysql> quit
# 建議到Windows上的XAMPP重啟mysql
mysql -h 127.0.0.1 -u root dcm4chee_pacs < $DCM4CHEE_ARC/sql/mysql/create-mysql.sql
# 在Windows上安裝OpenLDAP
# https://hackmd.io/@LuckyPig/dcm4chee-install-note#OpenLDAP-Server架設紀錄
# 在Windows上執行Apache Directory Studio來匯入剩餘設定檔
# https://hackmd.io/@LuckyPig/dcm4chee-install-note#導入dcm4chee預設LDAP設定檔紀錄
# ------------------
# Network Parameter:
# Hostname: localhost
# Port: 389
# Authentication Parameter:
# Bind DN or user: cn=admin,dc=dcm4che,dc=org
# Bind password: secret
# Browser Options:
# Base DN: dc=dcm4che,dc=org
# ------------------
export DCM4CHEE_ARC=/mnt/c/Services/dcm4chee-wsl/dcm4chee-arc-5.29.1-mysql
# 設定環境變數$DCM4CHEE_ARC(根據安裝包解壓後的實際路徑設定)
export WILDFLY_HOME=/mnt/c/Services/dcm4chee-wsl/wildfly-26.1.2.Final
# 設定環境變數$WILDFLY_HOME(根據安裝包解壓後的實際路徑設定)
cp -r $DCM4CHEE_ARC/configuration $WILDFLY_HOME/standalone
cd $WILDFLY_HOME/standalone/configuration
cp standalone.xml dcm4chee-arc.xml
cd $WILDFLY_HOME
unzip $DCM4CHEE_ARC/jboss-modules/dcm4che-jboss-modules-5.29.1.zip
unzip $DCM4CHEE_ARC/jboss-modules/jai_imageio-jboss-modules-1.2-pre-dr-b04.zip
unzip $DCM4CHEE_ARC/jboss-modules/jclouds-jboss-modules-2.5.0-noguava.zip
unzip $DCM4CHEE_ARC/jboss-modules/ecs-object-client-jboss-modules-3.0.0.zip
cd /mnt/c/Services/dcm4chee-wsl
curl -o keycloak-wildfly-adapter-dist-15.0.0.zip -L https://github.com/keycloak/keycloak/releases/download/15.0.0/keycloak-oidc-wildfly-adapter-15.0.0.zip
cd $WILDFLY_HOME
unzip /mnt/c/Services/dcm4chee-wsl/keycloak-wildfly-adapter-dist-15.0.0.zip
cd $WILDFLY_HOME
unzip $DCM4CHEE_ARC/jboss-modules/jdbc-jboss-modules-mysql-8.0.29.zip
$WILDFLY_HOME/bin/standalone.sh -c dcm4chee-arc.xml
# 驗證JBoss是否順利啟動
```
### WSL2如果要使用Windows Host的MySQL或OpenLDAP記得查閱WSL虛擬網卡所配發的ip



#### WSL2要用Windows Host的OpenLDAP記得修改以下設定檔
`$DCM4CHEE_ARC/configuration/dcm4chee-arc/ldap.properties`
:::warning
**修改完後記得重新執行以下複製設定檔的指令**
```bash
cp -r $DCM4CHEE_ARC/configuration $WILDFLY_HOME/standalone
```
**然後要記得重啟WILDFLY** 再接續後面的安裝步驟
:::
### 到Windows檔案總管修改要匯入dcm4chee Wildfly的設定檔
`C:\Services\dcm4chee-wsl\dcm4chee-arc-5.29.1-mysql\cli\`
#### add-data-source-mysql.cli設定參考(連線到Windows XAMPP mysql)
```
/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://127.0.0.1:3306/dcm4chee_pacs?serverTimezone=Asia/Taipei \
--user-name=root --password=<user-password>
```
:::warning
**WSL2記得將MySQL連線改為虛擬網卡的ip**
:::
### 開啟新的WSL terminal設定WildFly與部署Dcm4chee前後端
```bash=
export DCM4CHEE_ARC=/mnt/c/Services/dcm4chee-wsl/dcm4chee-arc-5.29.1-mysql
# 設定環境變數$DCM4CHEE_ARC(根據安裝包解壓後的實際路徑設定)
export WILDFLY_HOME=/mnt/c/Services/dcm4chee-wsl/wildfly-26.1.2.Final
# 設定環境變數$WILDFLY_HOME(根據安裝包解壓後的實際路徑設定)
$WILDFLY_HOME/bin/jboss-cli.sh -c --file=$DCM4CHEE_ARC/cli/add-data-source-mysql.cli
$WILDFLY_HOME/bin/jboss-cli.sh -c --file=$DCM4CHEE_ARC/cli/adjust-managed-executor.cli
$WILDFLY_HOME/bin/jboss-cli.sh -c
[standalone@localhost:9990 /] :reload
[standalone@localhost:9990 /] /subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=max-post-size,value=10000000000)
[standalone@localhost:9990 /] /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=max-post-size,value=10000000000)
[standalone@localhost:9990 /] :reload
# 最後Deploy(部署)Dcm4chee前後端
[standalone@localhost:9990 /] deploy /mnt/c/Services/dcm4chee-wsl/dcm4chee-arc-5.29.1-mysql/deploy/dcm4chee-arc-ear-5.29.1-mysql.ear
[standalone@localhost:9990 /] deploy /mnt/c/Services/dcm4chee-wsl/dcm4chee-arc-5.29.1-mysql/deploy/dcm4chee-arc-ui2-5.29.1.war
```
### 驗證安裝結果與建立啟動捷徑
#### 請參閱WSL2安裝筆記的後續說明
+ https://hackmd.io/@LuckyPig/dcm4chee-install-note#最後於Windows瀏覽器上驗證Dcm4chee安裝結果
---
## Dicom影像傳輸測試工具-DCMTK
### DCMTK官方安裝手冊
+ https://github.com/DCMTK/dcmtk/blob/master/INSTALL
#### Cmake could not find any instance of visual studio解決方法
+ https://blog.csdn.net/diaodaa/article/details/106122943
### 也可以下載別人build好的可執行檔(zip)
+ [dicom.offis.de DCMTK Binary](https://dicom.offis.de/dcmtk.php.en#bin)
### 或是透過Chocolatey安裝 dicom.offis.de 建置好的DCMTK
+ [Chocolatey官方社群安裝教學](https://community.chocolatey.org/courses/installation/installing?method=installing-chocolatey)
+ [[Chocolatey] Windows 套件管理工具 - Chocolatey 初體驗](https://marcus116.blogspot.com/2019/02/chocolatey-windows-chocolatey.html)
#### 確定Chocolatey安裝好後即可透過以下指令安裝DCMTK
```
choco install dcmtk
```
#### :tada:歡迎贊助筆者一杯或多杯咖啡(Donate)
如果您覺得本篇筆記對您有實質的幫助😊
歡迎考慮贊助在下(LuckyPig)一杯咖啡
If you found this note helpful, it would mean a lot to me (LuckyPig) if you considered buying me a cup of coffee as a way of showing your support and appreciation. Thank you so much! 😊
[](https://paypal.me/luckypig3400?country.x=TW&locale.x=en_US)
### DCMTK官方dicom影像傳輸指引
+ https://support.dcmtk.org/docs/dcmsend.html
e.g.,
dcmsend -v -aet {your AE} -aec {EBM AE} {EBM PACS IP} {{PRT} PRFile
:::info
**連中岳老師解說:**
要手動上傳DICOM影像,可於cmd執行
dcmsend -v +sd +r -aet XXSCU -aec DCM4CHEE 127.0.0.1 11112 {DICOM檔目錄}
dcmsend -v +sd +r -aet XXSCU -aec ORTHANC 127.0.0.1 4242 {DICOM檔目錄}
(https://book.orthanc-server.com/users/cookbook.html)
**自行實測結果:(從Windows10傳送到WSL2)**
dcmsend -v +sd +r -aec DCM4CHEE 127.0.0.1 11112 {DICOM檔目錄}
省略-aet參數亦可正常傳輸dicom影像
:::
---
## Bluelight連接DCM4CHEE設定
### DCM4CHEE Restful API
+ https://github.com/dcm4che/dcm4chee-arc-light/wiki/RESTful-Services#qido_rs
+ https://github.com/dcm4che/dcm4chee-arc-light/wiki/RESTful-Services#wado_uri
### Bluelight Dicom Viewer Github
+ https://github.com/cylab-tw/bluelight
#### Bluelight config files
+ https://github.com/cylab-tw/bluelight/tree/master/bluelight/data
+ https://github.com/cylab-tw/bluelight/tree/master/search/data
### 我的`%bluelight%/search/data/config.json`
```json=
{
"DICOMWebServersConfig": [
{
"AETitle": "DCM4CHEE",
"enableHTTPS": false,
"hostname": "10.40.8.124",
"PORT": 8080,
"contentType": "application/json",
"timeout": 80000,
"charset": "UTF=8",
"QIDO": "dcm4chee-arc/aets/DCM4CHEE/rs",
"WADO": "dcm4chee-arc/aets/DCM4CHEE/rs",
"STOW": "dcm4chee-arc/aets/DCM4CHEE/rs",
"enableRetrieveURI": false,
"includefield": false,
"target": "../../bluelight/html/start.html",
"target-SM": "../../bluelight/html/start.html",
"token": {
"apikey": "",
"bearer": ""
}
}
],
"//_thumnail_witdth": "縮圖寬度",
"thumnail_witdth": 70,
"//_study_comparison": "進片模式",
"study_comparison": false
}
```
### 我的`%bluelight%/bluelight/data/config.json`
#### Special Thanks :tada:
:::info
+ [name=嘉笙學長]
+ [name=沁霖學長]
:::
```json=
{
"DICOMWebServersConfig": [
{
"AETitle": "DCM4CHEE",
"QIDO-enableHTTPS": false,
"WADO-enableHTTPS": false,
"QIDO-hostname": "10.40.8.124",
"WADO-hostname": "10.40.8.124",
"QIDO-PORT": 8080,
"WADO-PORT": 8080,
"contentType": "application/json",
"timeout": 80000,
"charset": "UTF=8",
"QIDO": "dcm4chee-arc/aets/DCM4CHEE/rs",
"WADO-URI": "api/wado",
"WADO-RS": "dcm4chee-arc/aets/DCM4CHEE/rs",
"WADO-RS/URI": "RS",
"DICOM/JPEG": "JPEG",
"STOW": "stow",
"enableRetrieveURI": false,
"includefield": false,
"enableXml2Dcm": false,
"Xml2DcmUrl": "/upload",
"target": "http://10.40.8.124:8080/",
"target_wsi": "bluelight/bluelight/html/start.html",
"token": {
"apikey": "",
"bearer": ""
}
}
],
"//_thumnail_witdth": "縮圖寬度",
"thumnail_witdth": 70,
"//_study_comparison": "進片模式",
"study_comparison": false
}
```