Compare commits

...

18 Commits

Author SHA1 Message Date
237cedf94c date format 2025-02-06 12:51:44 +06:00
d655a8ed4c FIX integer 2025-02-04 11:37:52 +06:00
486c752f1d network 2025-02-04 11:36:39 +06:00
6c74824cf7 wip 2025-02-04 11:33:58 +06:00
66ca4d797e wip 2025-02-04 11:32:00 +06:00
a31d78eff6 config 2025-02-04 11:28:03 +06:00
5e74b0e3e4 internal network 2025-02-04 11:27:56 +06:00
ed6ff3ea85 wip 2025-02-04 11:21:33 +06:00
905b0f3e05 disable auth by default 2025-02-04 11:12:19 +06:00
b534f94939 split networks, removed extra 2025-02-04 11:07:23 +06:00
bc305bd09e use config file 2025-02-04 11:07:02 +06:00
17a542d197 moved extra profiles 2025-02-04 11:05:23 +06:00
d193fdb1e2 reverted to default pg user 2025-02-04 11:04:47 +06:00
3482a40047 secure pgsql, TZ to UTC 2025-02-04 10:55:34 +06:00
af47d678f7 nginx 2025-02-02 00:44:27 +06:00
aa55ba0ff7 ohif nginx CORS 2025-02-02 00:28:33 +06:00
a43219780a enable python 2025-02-01 20:00:02 +06:00
fd41f96b24 transfers 2025-02-01 19:49:55 +06:00
8 changed files with 215 additions and 110 deletions

8
.env
View File

@ -23,16 +23,16 @@ ORTHANC_LOG=./volumes/orthanc_logs
# #
POSTGRES_DATA_MNT=./volumes/pg_data POSTGRES_DATA_MNT=./volumes/pg_data
PGDATA=/var/lib/postgresql/data PGDATA=/var/lib/postgresql/data
PGPASSWORD=secret PGPASSWORD=AH&1p8Gzen8tlu7i
POSTGRES_DB=orthanc POSTGRES_DB=orthanc
POSTGRES_PORT=5432 POSTGRES_PORT=5432
POSTGRES_USER=postgres POSTGRES_USER=postgres
POSTGRES_PASSWORD=password POSTGRES_PASSWORD=AH&1p8Gzen8tlu7i
POSTGRES_HOST=postgres POSTGRES_HOST=postgres
TZ="Asia/Dhaka" TZ="UTC"
PGTZ="Asia/Dhaka" PGTZ="UTC"
PGADMIN_MAIL=admin@blackfish.dev PGADMIN_MAIL=admin@blackfish.dev
PGADMIN_PASS=secret PGADMIN_PASS=secret

View File

@ -1,4 +1,13 @@
location / { location / {
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
add_header 'Access-Control-Allow-Methods' '*';
add_header 'Access-Control-Allow-Origin' '*';
if ($request_method = OPTIONS ) {
return 200;
}
root /usr/share/nginx/html; root /usr/share/nginx/html;
index index.html index.htm; index index.html index.htm;
try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.html;
@ -11,6 +20,12 @@ location / {
add_header Cross-Origin-Opener-Policy same-origin; add_header Cross-Origin-Opener-Policy same-origin;
add_header Cross-Origin-Embedder-Policy require-corp; add_header Cross-Origin-Embedder-Policy require-corp;
add_header Cross-Origin-Resource-Policy same-origin; add_header Cross-Origin-Resource-Policy same-origin;
add_header Content-Security-Policy "upgrade-insecure-requests";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Strict-Transport-Security "max-age=1000";
add_header Cache-Control "no-store, no-cache, must-revalidate"; add_header Cache-Control "no-store, no-cache, must-revalidate";
} }

View File

@ -4,8 +4,8 @@
"EnableStorage": false, "EnableStorage": false,
"Host": "postgres", "Host": "postgres",
"Port": 5432, "Port": 5432,
"Database": "orthanc", "Database": "${POSTGRES_DB:-orthanc}",
"Username": "postgres", "Username": "${POSTGRES_USER:-postgres}",
"Password": "password" "Password": "${POSTGRES_PASSWORD}"
} }
} }

View File

@ -0,0 +1,11 @@
{
"HttpTimeout" : 120,
"Transfers" : {
"Threads" : 8,
"BucketSize" : 4096,
"CacheSize" : 128,
"MaxPushTransactions" : 4,
"MaxHttpRetries" : 0,
"PeerConnectivityTimeout": 2
}
}

View File

@ -6,7 +6,7 @@
* set, the DICOM tags will be displayed as such. "DD" will be * set, the DICOM tags will be displayed as such. "DD" will be
* replaced by the day, "MM" by the month, and "YYYY" by the year. * replaced by the day, "MM" by the month, and "YYYY" by the year.
**/ **/
// "DateFormat" : "DD/MM/YYYY", "DateFormat" : "DD/MM/YYYY",
/** /**
* Defines how times are displayed in the UI. If this option is not * Defines how times are displayed in the UI. If this option is not
@ -14,7 +14,7 @@
* replaced by the hour, "mm" by the minutes, "ss" by the seconds * replaced by the hour, "mm" by the minutes, "ss" by the seconds
* and ".f" by the fractions of seconds. * and ".f" by the fractions of seconds.
**/ **/
// "TimeFormat" : "hh:mm:ss.f", "TimeFormat" : "hh:mm:ss",
/** /**

158
docker-compose.dev.yml Normal file
View File

@ -0,0 +1,158 @@
services:
postgres:
image: postgres:alpine
container_name: postgres
profiles: [main, extra]
ports:
- "5432:5432"
networks:
pacs:
aliases:
- postgres
environment:
PGPASSWORD: ${PGPASSWORD}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
PGDATA: ${PGDATA}
PGTZ: ${PGTZ}
POSTGRES_HOST_AUTH_METHOD: "trust"
volumes:
- ${POSTGRES_DATA_MNT}:${PGDATA}:Z
healthcheck:
test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
start_period: 20s
interval: 30s
retries: 5
timeout: 5s
restart: unless-stopped
orthanc:
container_name: orthanc
profiles: [main, extra]
image: orthancteam/orthanc
ports:
- "8042:8042"
- "4242:4242"
volumes:
- ${ORTHANC_CONFIG:-./config/orthanc}:/etc/orthanc/:ro
- ${ORTHANC_DB_MNT:-./volumes/orthanc_db}:/var/lib/orthanc/db:Z
- ${ORTHANC_OHIF:-./config/ohif/ohif.js}:/usr/local/share/orthanc/ohif.js:ro
- ${ORTHANC_LOG:-./volumes/orthanc_logs}:/var/log/orthanc
env_file:
- orthanc.env
environment:
ORTHANC__DICOM_AET: "${ORTHANC_AET}"
ORTHANC__POSTGRESQL__HOST: "${POSTGRES_HOST}"
restart: unless-stopped
networks:
pacs:
aliases:
- orthanc
depends_on:
- postgres
ohif:
container_name: ohif
profiles: [main, extra]
image: ohif/app:v3.9.2
ports:
- "3000:80"
environment:
APP_CONFIG: /usr/share/nginx/html/app-config.js
volumes:
- ${NGINX_DEFAULT_CONF}:/etc/nginx/conf.d/default.conf:ro
- ${NGINX_OHIF_CONF}:/etc/nginx/enabled-sites/ohif.conf:ro
- ${OHIF_CONFIG}:/usr/share/nginx/html/app-config.js:ro
- ${OHIF_LOGO}:/usr/share/nginx/html/logo.png:ro
restart: unless-stopped
depends_on:
- orthanc
networks:
pacs:
aliases:
- ohif
meddream:
image: meddream/dicom-viewer:8.5.0
profiles: [extra]
container_name: meddream
restart: unless-stopped
ports:
- "80:8080"
depends_on:
- orthanc
- postgres
networks:
pacs:
aliases:
- meddream
volumes:
- ./config/meddream/application.properties:/opt/meddream/application.properties:ro
#- ./config/meddream/license:/opt/meddream/license:ro
- ./config/meddream/system.json:/opt/meddream/sys/settings/system.json:ro
orthanctoolsjs:
profiles: [extra]
image: salimkanoun/orthanctoolsjs
restart: unless-stopped
ports:
- "4000:4000"
volumes:
- ${ORTHANC_TOOLS_MNT:-./volumes/orthanc_tools}:/OrthancToolsJs/data
environment:
TZ: "${TZ}"
ORTHANC_ADDRESS: "http://orthanc"
ORTHANC_PORT: "8042"
ORTHANC_USERNAME: "${ORTHANC_USERNAME}"
ORTHANC_PASSWORD: "${ORTHANC_PASSWORD}"
REDIS_HOST: "redis"
REDIS_PORT: "6379"
REDIS_PASSWORD: ""
DB_USERNAME: "${POSTGRES_USER}"
DB_PASSWORD: "${POSTGRES_PASSWORD}"
DB_HOST: "${POSTGRES_HOST}"
DB_PORT: ${POSTGRES_PORT}
DB_NAME: ${POSTGRES_DB}
DOMAIN_PROTOCOL: "http"
DOMAIN_ADDRESS: "localhost:4000"
depends_on:
- redis
- orthanc
- postgres
networks:
pacs:
aliases:
- orthanctoolsjs
redis:
profiles: [extra]
image: redis:alpine
networks:
pacs:
aliases:
- redis
pgadmin:
container_name: pgadmin
profiles: [extra]
image: dpage/pgadmin4:latest
restart: unless-stopped
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_MAIL}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASS}
PGADMIN_CONFIG_SERVER_MODE: ${PGADMIN_SERVER}
PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED: ${PGADMIN_MASTER_PASS}
PGADMIN_LISTEN_PORT: ${PGADMIN_PORT}
ports:
- "${PGADMIN_PORT}:${PGADMIN_PORT}"
depends_on:
- postgres
networks:
pacs:
aliases:
- pgadmin
networks:
pacs:
external: true

View File

@ -2,11 +2,10 @@ services:
postgres: postgres:
image: postgres:alpine image: postgres:alpine
container_name: postgres container_name: postgres
profiles: [main, extra]
ports: ports:
- "5432:5432" - "5432:5432"
networks: networks:
pacs: backend:
aliases: aliases:
- postgres - postgres
environment: environment:
@ -16,7 +15,7 @@ services:
POSTGRES_DB: ${POSTGRES_DB} POSTGRES_DB: ${POSTGRES_DB}
PGDATA: ${PGDATA} PGDATA: ${PGDATA}
PGTZ: ${PGTZ} PGTZ: ${PGTZ}
POSTGRES_HOST_AUTH_METHOD: "trust" #POSTGRES_HOST_AUTH_METHOD: "trust"
volumes: volumes:
- ${POSTGRES_DATA_MNT}:${PGDATA}:Z - ${POSTGRES_DATA_MNT}:${PGDATA}:Z
healthcheck: healthcheck:
@ -29,7 +28,6 @@ services:
orthanc: orthanc:
container_name: orthanc container_name: orthanc
profiles: [main, extra]
image: orthancteam/orthanc image: orthancteam/orthanc
ports: ports:
- "8042:8042" - "8042:8042"
@ -40,21 +38,24 @@ services:
- ${ORTHANC_OHIF:-./config/ohif/ohif.js}:/usr/local/share/orthanc/ohif.js:ro - ${ORTHANC_OHIF:-./config/ohif/ohif.js}:/usr/local/share/orthanc/ohif.js:ro
- ${ORTHANC_LOG:-./volumes/orthanc_logs}:/var/log/orthanc - ${ORTHANC_LOG:-./volumes/orthanc_logs}:/var/log/orthanc
env_file: env_file:
- .env
- orthanc.env - orthanc.env
environment: environment:
ORTHANC__DICOM_AET: "${ORTHANC_AET}" ORTHANC__DICOM_AET: "${ORTHANC_AET}"
ORTHANC__POSTGRESQL__HOST: "${POSTGRES_HOST}" ORTHANC__POSTGRESQL__HOST: "${POSTGRES_HOST}"
restart: unless-stopped restart: unless-stopped
networks: networks:
pacs: wolfland:
aliases: aliases:
- orthanc - orthanc_public
backend:
aliases:
- orthanc_private
depends_on: depends_on:
- postgres - postgres
ohif: ohif:
container_name: ohif container_name: ohif
profiles: [main, extra]
image: ohif/app:v3.9.2 image: ohif/app:v3.9.2
ports: ports:
- "3000:80" - "3000:80"
@ -69,90 +70,13 @@ services:
depends_on: depends_on:
- orthanc - orthanc
networks: networks:
pacs: wolfland:
aliases: aliases:
- ohif - ohif
meddream:
image: meddream/dicom-viewer:8.5.0
profiles: [extra]
container_name: meddream
restart: unless-stopped
ports:
- "80:8080"
depends_on:
- orthanc
- postgres
networks: networks:
pacs: backend:
aliases: driver: bridge
- meddream #internal: true
volumes: wolfland:
- ./config/meddream/application.properties:/opt/meddream/application.properties:ro
#- ./config/meddream/license:/opt/meddream/license:ro
- ./config/meddream/system.json:/opt/meddream/sys/settings/system.json:ro
orthanctoolsjs:
profiles: [extra]
image: salimkanoun/orthanctoolsjs
restart: unless-stopped
ports:
- "4000:4000"
volumes:
- ${ORTHANC_TOOLS_MNT:-./volumes/orthanc_tools}:/OrthancToolsJs/data
environment:
TZ: "${TZ}"
ORTHANC_ADDRESS: "http://orthanc"
ORTHANC_PORT: "8042"
ORTHANC_USERNAME: "${ORTHANC_USERNAME}"
ORTHANC_PASSWORD: "${ORTHANC_PASSWORD}"
REDIS_HOST: "redis"
REDIS_PORT: "6379"
REDIS_PASSWORD: ""
DB_USERNAME: "${POSTGRES_USER}"
DB_PASSWORD: "${POSTGRES_PASSWORD}"
DB_HOST: "${POSTGRES_HOST}"
DB_PORT: ${POSTGRES_PORT}
DB_NAME: ${POSTGRES_DB}
DOMAIN_PROTOCOL: "http"
DOMAIN_ADDRESS: "localhost:4000"
depends_on:
- redis
- orthanc
- postgres
networks:
pacs:
aliases:
- orthanctoolsjs
redis:
profiles: [extra]
image: redis:alpine
networks:
pacs:
aliases:
- redis
pgadmin:
container_name: pgadmin
profiles: [extra]
image: dpage/pgadmin4:latest
restart: unless-stopped
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_MAIL}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASS}
PGADMIN_CONFIG_SERVER_MODE: ${PGADMIN_SERVER}
PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED: ${PGADMIN_MASTER_PASS}
PGADMIN_LISTEN_PORT: ${PGADMIN_PORT}
ports:
- "${PGADMIN_PORT}:${PGADMIN_PORT}"
depends_on:
- postgres
networks:
pacs:
aliases:
- pgadmin
networks:
pacs:
external: true external: true

View File

@ -1,7 +1,4 @@
VERBOSE_STARTUP=true ORTHANC__POSTGRESQL__HOST=postgres
#VERBOSE_ENABLED=true
ORTHANC__POSTGRESQL__HOST=orthanc-db
ORTHANC__POSTGRESQL__TRANSACTION_MODE=ReadCommitted ORTHANC__POSTGRESQL__TRANSACTION_MODE=ReadCommitted
ORTHANC__POSTGRESQL__INDEX_CONNECTIONS_COUNT=10 ORTHANC__POSTGRESQL__INDEX_CONNECTIONS_COUNT=10
@ -12,13 +9,13 @@ ORTHANC__DICOM_WEB__SERIES_METADATA="Full"
ORTHANC__DICOM_WEB__STUDIES_METADATA="Full" ORTHANC__DICOM_WEB__STUDIES_METADATA="Full"
ORTHANC__DICOM_WEB__METADATA_WORKER_THREADS_COUNT=4 ORTHANC__DICOM_WEB__METADATA_WORKER_THREADS_COUNT=4
ORTHANC__STONE_WEB_VIEWER__DATE_FORMAT: "DD/MM/YYYY" ORTHANC__STONE_WEB_VIEWER__DATE_FORMAT="DD/MM/YYYY"
ORTHANC__AUTHENTICATION_ENABLED: "false" ORTHANC__AUTHENTICATION_ENABLED=false
ORTHANC__NAME="BlackFish" ORTHANC__NAME="BlackFish"
POSTGRESQL_PLUGIN_ENABLED=true POSTGRESQL_PLUGIN_ENABLED=true
LOGDIR="/var/log/orthanc" LOGDIR="/var/log/orthanc"
VERBOSE_ENABLED=true #VERBOSE_ENABLED=true
VERBOSE_STARTUP=true VERBOSE_STARTUP=true
DICOM_WEB_PLUGIN_ENABLED=true DICOM_WEB_PLUGIN_ENABLED=true
OHIF_PLUGIN_ENABLED=true OHIF_PLUGIN_ENABLED=true
@ -27,8 +24,8 @@ ORTHANC_WEB_VIEWER_PLUGIN_ENABLED=true
STONE_WEB_VIEWER_PLUGIN_ENABLED=true STONE_WEB_VIEWER_PLUGIN_ENABLED=true
HOUSEKEEPER_PLUGIN_ENABLED=true HOUSEKEEPER_PLUGIN_ENABLED=true
ORTHANC_EXPLORER_2_ENABLED=true ORTHANC_EXPLORER_2_ENABLED=true
#PYTHON_PLUGIN_ENABLED=true PYTHON_PLUGIN_ENABLED=true
#TRANSFERS_PLUGIN_ENABLED=true TRANSFERS_PLUGIN_ENABLED=true
#WORKLISTS_PLUGIN_ENABLED=true #WORKLISTS_PLUGIN_ENABLED=true
#MULTITENANT_DICOM_PLUGIN_ENABLED=true #MULTITENANT_DICOM_PLUGIN_ENABLED=true
#INDEXER_PLUGIN_ENABLED=true #INDEXER_PLUGIN_ENABLED=true