최근 버전 업그레이드 됨에 따라서 원격 접속이 매우 제한된 것 같다. HTTPS를 지원하지 못하면 원격 접속을 이용할 수 없게 된다. Orthanc 에서는 리버스 프록시와 자체적으로 지원하는데 자체적으로 지원하는 방법을 이용을 아무리 해봐도 안되었다. 그래서 익숙한 nginx 를 이용하여 리버스 프록시로 구현하였다.
Web 화면보다는 Rest API가 더 중요하기 때문이 이를 이용할 수 있도록 설정을 하는 것을 목표로 했다.
늘 하듯이 도커 이미지를 이용하여 컨테이너를 생성하고 orthanc와 필요한 패키지들을 설치한다. Orthanc 도움말을 보면 성능을 위해서는 SQLite가 아닌 MySQL이나 PostgreSQL을 이용하라고 한다. PostgreSQL을 좋아하기 때문에 이를 이용하기 위해서 설치한다.
sudo docker run -it -p 8042:8042 -p 4242:4242 -p 443:443 --name orthanc --restart always -v /home/ysrcc/ext:/root/OrthancStorage debian
echo 'Acquire::http::Proxy "http://rcc.work:3142";' > /etc/apt/apt.conf
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
apt -y update && apt -y upgrade
apt -y install locales
sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen
locale-gen
apt -y install orthanc orthanc-postgresql \
procps nano ftp curl postgresql nginx sudo
웹 접속에서는 문제가 생기지 않는데 curl 명령어를 이용할 경우 주소가 일치하지 않으면 인증서와 관련된 오류가 생긴다. -k 를 이용하여 검증을 안함으로 해도 되기는 하지만, 정석대로 인증서를 이용하는 것을 전제로 한다.
인증서는 다음과 같이 생성한다.
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /tmp/private.key -out /tmp/certificate.crt -subj "/CN=10.10.10.171"
cat /tmp/private.key /tmp/certificate.crt > /tmp/certificate.pem
/etc/orthanc/orthanc.json 에서 다음의 내용을 수정한다. 리버스 프록시를 이용하여 접속을 할 것이기 때문에 설정을 건드릴 부분이 별로 없다.
"StorageDirectory" : "/root/OrthancStorage",
...
"DefaultEncoding" : "Korean",
or
sed -i 's/Latin1/Korean/g' /etc/orthanc/orthanc.json
/etc/orthanc/postgresql.json 파일에서 다음을 수정한다. username과 password 부분을 수정한다.
"EnableIndex" : true,
"Username" : "postgres",
"Password" : "postgres",
설정을 했으면 PostgreSQL 에서도 수정해야 한다는 것을 알 수 있다.
$ service postgresql start
$ sudo -u postgres psql
# \password postgres
# create database orthanc_db;
# \q
nginx.conf 파일에서 gzip off로 설정한다. 미리 작성한 파일을 가져와도 된다.
http {
...
gzip off;
...
}
or
curl -s http://rcc.work:3143/nginx_orthanc.conf > /etc/nginx/nginx.conf
/etc/nginx/sites-available/default 를 다음과 같이 수정한다.
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_certificate /tmp/certificate.crt;
ssl_certificate_key /tmp/private.key;
ssl_protocols TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "TLS-AES-128-GCM-SHA256:ECDHE-RSA-AES128-SHA256";
root /var/www/blog;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
proxy_pass http://localhost:8042;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
}
or
curl -s http://rcc.work:3143/default_orthanc > /etc/nginx/sites-available/default
컨테이너가 예기치 않게 종료될 수 있으므로 .bashrc 에 다음을 추가해서 실행시에 문제가 없도록 한다.
echo "cd /root" >> /root/.bashrc
echo "service postgresql start" >> /root/.bashrc
echo "service nginx start" >> /root/.bashrc
echo "Orthanc /etc/orthanc/ &" >> /root/.bashrc