🐳 Установка системы управления документами (СУД) Docspell на Docker

by itisgood

Docspell – это простая, но мощная система управления документами (СУД).

Она призвана стать вашим органайзером и помочь быстро спрятать документы, а впоследствии найти их быстрее и надежнее.

Docspell предназначен для использования дома и в малых и средних организациях.

Если у вас есть физические документы, такие как квитанции, контракты, счета, счета-фактуры и т.д., которые необходимо отсканировать и сохранить в форматах PDF, Docspell DMS – обязательный инструмент.

Docspell имеет веб-панель управления, но доступен через REST или HTTP api и может быть легко использован в ваших собственных сценариях и инструментах, например, с помощью curl.

Вы можете посетить страницу возможностей Docspell, чтобы проверить и понять все возможности этого замечательного программного продукта.

К числу основных возможностей относятся:

  • Возможность работы с несколькими документами как с единым целым. Это упрощает управление файлами.
  • OCR с использованием tesseract
  • Функция полнотекстового поиска, основанная на текстовом поиске Apache SOLR или PostgreSQL
  • Преобразование в PDF по умолчанию: Docspell преобразует все файлы в PDF-файл после сканирования.
  • Мощный язык запросов для поиска документов
  • После загрузки файла он никогда не изменяется и всегда может быть загружен нетронутым.
  • Файлы могут быть организованы с помощью тегов, папок, пользовательских полей и других метаданных
    и многие другие возможности

Шаг 1 – Установка движка Docker Container Engine

В этой статье мы запустим систему управления документами (СУД) Docspell в контейнере Docker .

Для запуска контейнеров Docker Engine должен быть установлен на локальной системе.

Подтвердите установку Docker

$ docker --version
Docker version 24.0.5, build ced0996

$ docker compose version
Docker Compose version v2.20.2

Также рассмотрите возможность установки git на вашу систему.

sudo apt install git vim -y

Шаг 2 – Клонирование git-источника docspell

С помощью git извлеките последние исходные тексты Docspell

git clone https://github.com/eikek/docspell

Измените рабочий каталог на папку docspell.

Затем в папку docker/docker-compose/, которая содержит конфигурационный файл compose, используемый для запуска Docker-контейнеров приложений Docspell.

cd docspell/docker/docker-compose/

Вы можете редактировать файл compose

$ vim docker-compose.yml
...
environment:
      - TZ=Europe/Berlin

Можно изменить несколько переменных окружения, например:

  • DOCSPELL_SERVER_ADMIN__ENDPOINT_SECRET
  • DOCSPELL_SERVER_AUTH_SERVER__SECRET
  • DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_HEADER__VALUE

Шаг 3 – Запуск Docspell DMS в контейнерах Docker

После завершения настройки можно запустить контейнеры Docspell, выполнив следующие команды:

$ docker compose up -d
[+] Running 8/8
 ✔ Network docker-compose_default                  Created                                                                                                                                       0.1s
 ✔ Volume "docker-compose_docspell-postgres_data"  Created                                                                                                                                       0.0s
 ✔ Volume "docker-compose_docspell-solr_data"      Created                                                                                                                                       0.0s
 ✔ Container postgres_db                           Started                                                                                                                                       0.7s
 ✔ Container docspell-solr                         Started                                                                                                                                       0.7s
 ✔ Container docspell-joex                         Started                                                                                                                                       1.2s
 ✔ Container docspell-restserver                   Started                                                                                                                                       1.4s
 ✔ Container docspell-consumedir                   Started

Проверка состояния должна возвращать статус Up для следующих 5 контейнеров.

$ docker ps
CONTAINER ID   IMAGE                        COMMAND                  CREATED          STATUS                             PORTS                                       NAMES
3112cf002922   docspell/dsc:latest          "dsc -d http://docsp…"   32 seconds ago   Up 30 seconds                                                                  docspell-consumedir
6f678c80f3a3   docspell/joex:latest         "/opt/joex-entrypoin…"   32 seconds ago   Up 31 seconds (health: starting)   0.0.0.0:7878->7878/tcp, :::7878->7878/tcp   docspell-joex
07d5d911ffc2   docspell/restserver:latest   "/opt/docspell-rests…"   32 seconds ago   Up 30 seconds (health: starting)   0.0.0.0:7880->7880/tcp, :::7880->7880/tcp   docspell-restserver
c701229cb9af   solr:9                       "docker-entrypoint.s…"   32 seconds ago   Up 31 seconds (health: starting)   8983/tcp                                    docspell-solr
7112a6d48b16   postgres:15.4                "docker-entrypoint.s…"   32 seconds ago   Up 31 seconds                      5432/tcp                                    postgres_db

Если необходимо проверить журналы запуска какого-либо контейнера, то используйте.

docker logs <container>

Перечислять контейнеры можно и с помощью команд compose.


NAME                  IMAGE                        COMMAND                  SERVICE             CREATED             STATUS                  PORTS
docspell-consumedir   docspell/dsc:latest          "dsc -d http://docsp…"   consumedir          13 hours ago        Up 13 hours
docspell-joex         docspell/joex:latest         "/opt/joex-entrypoin…"   joex                13 hours ago        Up 13 hours (healthy)   0.0.0.0:7878->7878/tcp, :::7878->7878/tcp
docspell-restserver   docspell/restserver:latest   "/opt/docspell-rests…"   restserver          13 hours ago        Up 13 hours (healthy)   0.0.0.0:7880->7880/tcp, :::7880->7880/tcp
docspell-solr         solr:9                       "docker-entrypoint.s…"   solr                13 hours ago        Up 13 hours (healthy)   8983/tcp
postgres_db           postgres:15.4                "docker-entrypoint.s…"   db                  13 hours ago        Up 13 hours             5432/tcp

Шаг 4 – Доступ к веб-консоли Docspell DMS

Доступ к веб-консоли Docspell можно получить по адресу http://serverip_or_domain:7880.

Далее создайте пользователя, нажав на Sign up

Шаг 5 – Настройка прокси-сервера Nginx для Docspell

Для защиты нашего сервиса с помощью SSL-сертификата настоятельно рекомендуется использовать Nginx.

Но сначала необходимо установить пакет nginx.

### Debian based systems ###
sudo apt install nginx

### RHEL based systems ###
sudo yum install nginx

Запустите и включите службу nginx для запуска при загрузке системы.

sudo systemctl enable --now nginx

Создание файла конфигурации docspell.conf

sudo vim /etc/nginx/conf.d/docspell.conf

Если не используется SSL, то нижеприведенный файл конфигурации по умолчанию должен работать.

Просто обновите FQDN.

server {
    listen 80 ;
    server_name edms.example.net ;
    location / {
        proxy_pass http://127.0.0.1:7880;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header X-Forwarded-Host   $host;
    }
}

Использование Let’s Encrypt / любого другого SSL

Для использования SSL обновите файл конфигурации Nginx, включив в него дополнительные параметры безопасности.

server {
    listen 80 ;
    server_name edms.example.net ;
    location / {
        return 301 https://$host$request_uri;
    }
}
server {
    listen 443 ssl http2 ;
    server_name edms.example.net ;
    ssl_certificate /etc/letsencrypt/live/edms.example.net/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/edms.example.net/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/edms.example.net/fullchain.pem;
    location / {
        proxy_pass http://127.0.0.1:7880;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header X-Forwarded-Host   $host;
        proxy_set_header X-Forwarded-Port   443;
        proxy_set_header X-Forwarded-Proto  https;
    }
}

Обратите внимание, что домен, используемый в server_name, должен быть FQDN и иметь правильно настроенную DNS-запись.

В тестовых целях можно использовать локальный файл /etc/hosts для сопоставления IP-адреса с доменным именем.

Мы надеемся, что эта статья была познавательной и вам понравится Docspell в качестве системы управления документами.

см. также:

 

You may also like

Leave a Comment