В инструкции на этой странице представлена установка Orthanc для хранения и просмотра по сети DICOM-файлов.
Orthanc – это легковесный DICOM/PACS-сервер с Web-интерфейсом и REST API, предназначенный для хранения, поиска, передачи и просмотра медицинских изображений в формате DICOM. Полностью бесплатное программное обеспечение с открытым исходным кодом.
DICOM (Digital Imaging and Communications in Medicine) – международный стандарт хранения медицинских изображений и обмена ими между медицинскими информационными системами и диагностическим оборудованием.
PACS (Picture Archiving and Communication System) – сервер централизованного хранения и управления медицинскими изображениями в формате DICOM.
Установка выполнена на операционной системе Ubuntu 24. В роли базы данных используется PostgreSQL 16. Всё это установлено на виртуальной машине (виртуализация Proxmox VE).
Параметры ВМ.
CPU: 4
RAM: 8Gb.
Storage: System 100Gb, Data 6Tb RAID1
OS: ubuntu-24.04.4-live-server-amd64.iso
Обычно при установке Orthanc руководствуются следующей логикой размещения данных: на SSD желательно размещать операционную систему и базу данных, на HDD большого объема архив DICOM-файлов.
Диск для системы.
В данном случае виртуальная машина расположена на RAID1 14Tb, а не на SSD. Для системы создан диск 100Гб. На нем же база данных. Этого места вполне достаточно.
В рабочей конфигурации Orthanc хранит в PostgreSQL только индекс – текстовую информацию о пациентах, исследованиях и ссылки на файлы. Сами DICOM-файлы (изображения) хранятся на диске в папке StorageDirectory. База данных с индексом растет очень медленно и занимает лишь малую часть от общего объема данных. Даже при хранении терабайтов изображений, размер базы данных обычно остается в пределах нескольких гигабайт. 100 ГБ – это с запасом на будущее.
Диск для данных.
Вариант1 (попроще) – создать один большой диск 6Тб и на него установить и систему и БД и сами снимки.
Вариант2 (посложнее) – добавить к виртуальной машине еще 1 диск 6Тб, затем внутри Ubuntu настроить хранение снимков на этом диске.
В данной инструкции представлен более правильный вариант №2, хотя первый вариант тоже встречается.
Установка ОС.
Система Ubuntu установлена стандартным способом через мастер установки.
IP-адрес раздается по DHCP. Есть доступ в Интернет.
Системный диск размечен для использования максимального объема. Диск для данных будет настроен позже.
Отмечен к установке Open SSH сервер.
Переходим к настройкам. Подключаемся к серверу по SSH.
|
1 |
sudo -i |
(пароль)
Обновляем систему.
|
1 |
apt update |
|
1 |
apt upgrade -y |
Установка и настройка базы данных.
Устанавливаем PostgreSQL.
|
1 |
apt install postgresql postgresql-contrib |
Проверяем.
|
1 |
systemctl status postgresql |
Должно быть Active: active (exited)
Можно уточнить версию установившейся базы данных.
|
1 |
psql --version |
В данном случае версия 16.14.
Создаем пользователя для базы данных.
Запускаем программу psql от имени пользователя postgres (sudo обязательно).
|
1 |
sudo -u postgres psql |
В консоли PostgreSQL
|
1 |
CREATE USER orthanc WITH PASSWORD 'Pass-135'; |
|
1 |
CREATE DATABASE orthanc OWNER orthanc; |
Проверяем:
|
1 |
\l |
В списке должна появиться база orthanc.
Выходим:
|
1 |
\q |
Установка Orthanc.
|
1 |
apt install -y orthanc |
Устанавливаем плагин PostgreSQL.
|
1 |
apt install -y orthanc-postgresql |
Плагин позволяет Orthanc использовать PostgreSQL в качестве базы данных для индексов (и, опционально, для хранения файлов) вместо стандартной SQLite. У SQLite есть ограничения, ее использование не рекомендуется.
Другие плагины установим по мере необходимости.
Если в процессе работы с Orthanc возникнет необходимость его интеграции с медицинской системой или использование доступа по HTTPS или установка определенных плагинов и другие подобные более тонкие настройки, то в таком случае желательно сразу устанавливать Orthanc из официального репозитория.
Устанавливаем необходимые пакеты.
|
1 |
apt install -y ca-certificates wget gnupg |
Создаём каталог для ключей.
|
1 |
install -d -m 0755 /usr/share/keyrings |
Получаем ключ официального репозитория Orthanc.
|
1 |
wget -qO - https://orthanc.uclouvain.be/debian/archive.key | gpg --dearmor -o /usr/share/keyrings/orthanc-archive-keyring.gpg |
Добавляем репозиторий:
|
1 |
echo "deb [signed-by=/usr/share/keyrings/orthanc-archive-keyring.gpg] https://orthanc.uclouvain.be/debian $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2) main" > /etc/apt/sources.list.d/orthanc.list |
Обновляем список пакетов.
|
1 |
apt update |
Проверяем, что используется именно официальный Orthanc.
|
1 |
apt policy orthanc |
В выводе источник пакета должен быть:
|
1 |
https://orthanc.uclouvain.be/debian |
а не стандартный репозиторий Ubuntu.
|
1 |
Candidate: 1.13.0+lsb-5 |
или другая версия с суффиксом lsb
Устанавливаем Orthanc.
|
1 |
apt install -y orthanc |
Проверяем.
|
1 |
Orthanc --version |
|
1 |
systemctl status orthanc |
Структура конфигурации Orthanc.
Конфигурация Orthanc разделена на несколько файлов. Каждый файл отвечает только за свою группу параметров.
orthanc.json – основные настройки сервера (HTTP, DICOM, каталоги, плагины и др.).
postgresql.json – настройки подключения к PostgreSQL и хранения индекса исследований.
credentials.json – пользователи и пароли для доступа к Web-интерфейсу и REST API.
serve-folders.json – публикация локальных каталогов через HTTP.
worklists.json – настройка DICOM Worklist (используется при необходимости).
Один и тот же параметр должен быть определён только в одном файле. Если одна и та же секция (например, RegisteredUsers) встречается в нескольких конфигурационных файлах, Orthanc завершит работу с ошибкой.
Для доступа к файлам на диске удобно использовать менеджер MobaExterm.
Перед выполнением настроек все эти файлы в оригинальном виде желательно сохранить. (скачиваем файлы на ПК админа)
Настройка базы данных.
Переходим в файл конфигурации базы данных.
|
1 |
nano /etc/orthanc/postgresql.json |
В этом файле можно исправить пару строчек (бд, пользователь, пароль, и тп) или заменить всю конфигурацию на представленную ниже.
Удаляем существующую конфигурацию и копируем-вставляем представленную ниже.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
{ // Использовать PostgreSQL для хранения индекса Orthanc "PostgreSQL" : { // Хранить индекс в PostgreSQL "EnableIndex" : true, // Хранить DICOM-файлы в PostgreSQL (не рекомендуется) "EnableStorage" : false, // Параметры подключения к PostgreSQL "Host" : "localhost", "Port" : 5432, // Имя базы данных "Database" : "orthanc", // Пользователь PostgreSQL "Username" : "orthanc", // Пароль пользователя PostgreSQL "Password" : "Pass-135", // Блокировка базы данных (оставить true) "Lock" : true, // Использовать SSL для подключения "EnableSsl" : false, // Количество повторных попыток подключения "MaximumConnectionRetries" : 10, // Интервал между попытками (сек.) "ConnectionRetryInterval" : 5, // Количество соединений с PostgreSQL "IndexConnectionsCount" : 1 } } |
true – выполняется.
false – не выпоняется.
Сохраняем, выходим.
Ctrl+x, yes.
Настройка пользователей.
Редактируем файл конфигурации с пользователями.
|
1 |
nano /etc/orthanc/credentials.json |
Вариант1 – раскомментировать строку с учетными данными (убрать // вначале строки) и заменить на свои.
Вариант2 – удаляем содержимое и вставляем представленное ниже.
|
1 2 3 4 5 6 7 8 |
{ "RegisteredUsers" : { "admin" : "Pass-135", "doctor1" : "Doctor1Pass", "doctor2" : "Doctor2Pass", "doctor3" : "Doctor3Pass" } } |

(нужно указать свои данные)
Сохраняем, выходим.
Нельзя определять один и тот же параметр в нескольких JSON-файлах – это главное требование при работе с конфигурациями. Например, если пользователь определен в двух местах в основном orthanc.json и в credentials.json, то сервер будет завершать работу с ошибкой.
Редактируем основной файл конфигурации Orthanc.
|
1 |
nano /etc/orthanc/orthanc.json |
Минимально необходимый конфиг.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
{ "Name" : "Orthanc", // Каталог хранения DICOM-файлов "StorageDirectory" : "/var/lib/orthanc/db-v6", // Каталог индекса (не используется при PostgreSQL, но должен существовать) "IndexDirectory" : "/var/lib/orthanc/db-v6", // Включить HTTP-сервер "HttpServerEnabled" : true, // Порт Web-интерфейса "HttpPort" : 8042, // Разрешить подключение по сети "RemoteAccessAllowed" : true, // Требовать авторизацию "AuthenticationEnabled" : true, // Включить DICOM-сервер "DicomServerEnabled" : true, // AE Title сервера "DicomAet" : "ORTHANC", // DICOM-порт "DicomPort" : 4242, // Каталог плагинов "Plugins" : [ "/usr/share/orthanc/plugins/" ] } |

После изменения конфигурации всегда перезапускаем службу.
service orthanc restart
Проверяем статус.
|
1 |
systemctl status orthanc |

Проверяем ответ сервера. При включенной аутентификации в команде нужно указывать учетные данные.
|
1 |
curl -u admin:Pass-135 http://localhost:8042/system |
Проверяем доступ через web-интерфейс.
|
1 |
http://192.168.5.19:8042 |
Должен открыться интерфейс Orthanc Explorer.
Вводим учетные данные, указанные в файле конфига (admin Pass-135).
Если не запустился смотрим последние 30 логов.
|
1 |
journalctl -u orthanc -n 30 --no-pager |
Запуск с выводом причины ошибки.
|
1 |
/usr/sbin/Orthanc --verbose /etc/orthanc |
Установка диска для данных.
Переходим к этому пункту после того как Orthanc успешно запущен и проверен доступ.
Проверяем наличие второго диска в системе.
|
1 |
lsblk |
Создаем таблицу разделов GPT.
|
1 |
parted /dev/sdb --script mklabel gpt |
Создаем раздел на весь диск:
|
1 |
parted /dev/sdb --script mkpart primary ext4 0% 100% |
Проверяем результат.
|
1 |
lsblk |
Создаем файловую систему ext4 с меткой orthanc-data.
|
1 |
mkfs.ext4 -L orthanc-data /dev/sdb1 |
Создаем каталог, который будет использоваться в качестве точки монтирования диска с DICOM-архивом.
|
1 |
mkdir -p /dicom |
Назначение владельца каталога.
Orthanc работает от пользователя orthanc, поэтому предоставляем ему права.
|
1 |
chown -R orthanc:orthanc /dicom |
Проверяем.
|
1 |
ls -ld /dicom |
Результат.
|
1 |
drwxr-xr-x 3 orthanc orthanc |
Монтируем раздел вручную.
|
1 |
mount /dev/sdb1 /dicom |
Проверяем.
|
1 |
df -h |
Используем UUID для автомонтирования диска при старте ОС, потому что /dev/sdb может измениться, а UUID у файловой системы уникален и постоянен.
Получаем UUID раздела:
|
1 |
blkid /dev/sdb1 |

Редактируем конфигурацию fstab (filesystem table).
|
1 |
nano /etc/fstab |
Добавляем запись в конце.
|
1 |
/dev/disk/by-uuid/837142d0-f06f-42cf-be8d-d21f8fe33725 /dicom ext4 defaults,nofail 0 2 |

(указывать нужно свой UUID)
Сохраняем, выходим.
Ctrl+x, yes.
Открываем основной конфигурационный файл Orthanc.
|
1 |
nano /etc/orthanc/orthanc.json |
Изменяем только одну строку – новый путь для сохранения файлов.
|
1 |
"StorageDirectory" : "/dicom", |

Сохраняем, выходим.
Ctrl+x, yes.
Перезапускаем Orthanc.
|
1 |
systemctl restart orthanc |
Проверяем состояние службы:
|
1 |
systemctl status orthanc |
Должно быть Active: active (running)
Проверка хранения данных
Проверка выполняется после загрузки первого исследования.
|
1 |
ls -lah /dicom |
В каталоге должны появиться файлы и подкаталоги, созданные Orthanc.
Плагины просмотра.
Orthanc Explorer – классический встроенный Web-интерфейс Orthanc для управления DICOM-архивом. Позволяет просматривать пациентов и исследования, искать исследования, загружать DICOM-файлы и отправлять исследования на другие DICOM-серверы, выполнять административные операции.
Путь доступа.
|
1 |
http://<IP-сервера>:8042/ |
Или HTTPS если включен.
Orthanc Explorer 2 – современный Web-интерфейс Orthanc с улучшенным дизайном, расширенными возможностями поиска и более удобной навигацией по DICOM-архиву. Позволяет выполнять все функции классического Orthanc Explorer, а так же позволяет быстрее искать исследования, удобнее работать с большими архивами, интегрироваться с современными Web Viewer.
Путь доступа.
|
1 |
http://<IP-сервера>:8042/ui/app/ |
Или HTTPS если включен.
Orthanc Web Viewer – встроенный DICOM-просмотрщик, открывающий медицинские изображения непосредственно в браузере. Позволяет просматривать серии изображений, изменять масштаб и положение изображения, изменять яркость и контраст (Window/Level), выполнять базовые измерения, просматривать многокадровые исследования.
У Web Viewer нет постоянного URL для работы. Он открывается по специальной ссылке, которую формирует интерфейс Explorer после выбора пациента, исследования или серии.
То есть Orthanc Explorer и Orthanc Explorer 2 – это только Web-интерфейсы управления архивом. Orthanc Web Viewer – это просмотрщик DICOM-изображений, который запускается из одного из этих интерфейсов. Explorer и Web Viewer не заменяют, а дополняют друг друга.
Просмотр установленных в системе пакетов.
|
1 |
dpkg -l | grep orthanc |

Или можно посмотреть непосредственно установленные плагины.
|
1 |
curl -u admin:Pass-135 http://localhost:8042/plugins |

explorer.js – встроенный Web-интерфейс Orthanc (Orthanc Explorer).
web-viewer – просмотр DICOM-изображений непосредственно в браузере.
Это означает, что установлен классический Orthanc Explorer, а Orthanc Explorer 2 пока не установлен.
Установка orthanc-explorer2.
Пакет orthanc-explorer2 отсутствует в стандартных репозиториях Ubuntu.
Долгий вариант – устанавливать Orthanc с начала используя официальные репозитории Orthanc. Плюсы такого варианта в том, что все компоненты будут одной версии и гарантированно совместимы.
Вариант немного проще – подключить репозиторий Orthanc и установить из него только orthanc-explorer2.
Третий и используемый в итоге вариант – скачать плагин отдельно по ссылке и затем установить его.
Найти плагины можно на официальном сайте Orthanc.
Устанавливать нужно версию, соответствующую версии сервера.
|
1 |
Orthanc --version |
Orthanc 1.12.2 – значит нужно устанавливать плагин в пределах этой версии, например 1.12.0 или если выйдут более новые (1.12.1, 1.12.2 и тп).
Переходим в папку tmp.
|
1 |
cd /tmp |
Скачиваем плагин.
|
1 |
wget https://orthanc.uclouvain.be/downloads/linux-standard-base/orthanc-explorer-2/1.12.0/libOrthancExplorer2.so |
Копируем плагин в папку где в Orthanc должны размещаться плагины.
|
1 |
cp /tmp/libOrthancExplorer2.so /usr/share/orthanc/plugins/ |
Проверяем наличие скопированного файла.
|
1 |
ls -l /usr/share/orthanc/plugins/ |
Системные плагины установлены как символические ссылки, а Explorer 2 как обычный файл. Но это абсолютно нормально. Orthanc загружает все файлы *.so из каталога плагинов независимо от того, являются они ссылкой или обычным файлом.
Перезапускаем Orthanc.
|
1 |
systemctl restart orthanc |
Проверяем статус.
|
1 |
systemctl status orthanc |
Проверяем видит ли сервер плагин.
|
1 |
curl -u admin:Pass-135 http://localhost:8042/plugins |

Если плагин не загрузился, посмотреть логи.
|
1 |
journalctl -u orthanc -n 50 --no-pager |
Проверка доступа через браузер. (указываем свой IP)
|
1 |
http://192.168.5.19:8042/ui/app/ |

Установка завершена. Можно пользоваться новым интерфейсом и сервером Orthanc в целом.
Дополнение.
Для доступа по HTTPS достаточно настроить сертификат и два параметра в orthanc.json.
Создаём файл сертификата, содержащий закрытый ключ и сертификат сервера.
Это можно сделать различными способами, в том числе через сервисы в интернете, например.
В сертификате нужно указать IP-адрес сервера в поле SAN. Если в сети настроен DNS, можно обращаться к Orthanc по доменному имени. В этом случае в сертификате в SAN указывается это доменное имя вместо IP-адреса.
Добавляем сертификат в Orthanc по пути:
|
1 |
/etc/orthanc/server.pem |
Файл .pem должен содержать закрытый ключ и сертификат сервера.
Проверяем.
|
1 |
ls -l /etc/orthanc/server.pem |
Редактируем конфигурацию Orthanc
|
1 |
nano /etc/orthanc/orthanc.json |
В секции основных настроек добавляем:
|
1 2 |
"SslEnabled" : true, "SslCertificate" : "/etc/orthanc/server.pem", |
SslCertificate указывает на PEM-файл, содержащий сертификат и закрытый ключ.
Перезапускаем Orthanc.
|
1 |
systemctl restart orthanc |
Проверяем состояние службы.
|
1 |
systemctl status orthanc |
Проверяем доступ по HTTPS.
В браузере открываем:
|
1 |
https://IP-АДРЕС-ORTHANC:8042 |
Если сертификат самоподписанный или выпущен внутренним CA, браузер может показать предупреждение о сертификате.
Для Orthanc 1.13.0 не нужно добавлять HttpsPort. HTTPS использует тот же HttpPort, в данном случае 8042.


