Paperless — это приложение, написанное на Python, которое принимает отсканированные документы, индексирует их и представляет в удобном веб-интерфейсе. В этой статье мы установим Paperless с обратным прокси-сервером Nginx HTTPS в Debian.
Проверено на:
- Debian 11
Шаг 1. Устанавливаем зависимости.
Первым делом обновляемся
sudo apt update && sudo apt upgrade
Для работы paperless необходимы следующие компаненты, которые можно установить следующим образом:
sudo apt install -y python3-pip fonts-liberation imagemagick libmagic-dev libzbar0 poppler-utils unpaper icc-profiles-free qpdf liblept5 pngquant tesseract-ocr mariadb-client default-libmysqlclient-dev pkg-config libpq-dev
Если вы собираетесь работать с документами на языках, отличных от английского, установите соответствующие языковые файлы Tesseract. Например, для русского:
sudo apt install -y tesseract-ocr-rus
Вы можете просмотреть все доступные пакеты tesseract, используя следующую команду:
apt list tesseract-ocr-*
Если вы не уверены, какой трехбуквенный код соответствует желаемому языку, обратитесь к этому списку кодов ISO 639-2.
Шаг 2. Установка Redis.
Redis необходим для обработки запланированных задач, таких как получение электронной почты, оптимизация индекса и обучение автоматического сопоставления документов.
Для его установки воспользуйтесь следующей командой:
sudo apt install redis
После установки включить запуск redis при загрузке системы
sudo systemctl enable redis
Шаг 3. Создаем пользователя.
Несмотря на то, что paperless можно запустить от имени пользователя root, настоятельно рекомендуется использовать пользователя с более низкими привилегиями и отключенным входом в систему. Для этого и создаем пользователя и группу с именем paperless:
useradd -d /opt/paperless -M -r -s /bin/bash -U -p x paperless
Шаг 4. Установка paperless
Скачиваем архив с репозитория paperless следующей командой
curl -O -L https://github.com/paperless-ngx/paperless-ngx/releases/download/v2.11.3/paperless-ngx-v2.11.3.tar.xz
На момент написания статьи это была версия 2.11.3. Актуальную версию всегда можно уточнить на следующей странице: https://github.com/paperless-ngx/paperless-ngx/releases.
И распаковываем этот архив в каталог paperless
tar -xf paperless-ngx-v2.11.3.tar.xz -C /opt/paperless/ --strip-components=1
Предоставьте пользователю paperless права на все файлы из архива:
chown -R paperless:paperless /opt/paperless
Шаг 5. Конфигурирование paperless.
Теперь отредактируем конфигурационный файл /opt/paperless/paperless.conf. Для этого откроем его в любом удобном редакторе и отредактируем необходимые параметры.
Укажем путь к нашему Redis серверу
PAPERLESS_REDIS=redis://localhost:6379
Установим каталог, из которого Paperless будет получать отсканированные документы, а так же, где будут храниться все данные и обработанные документы. Здесь можно указать один и тот же каталог, но потом разобраться что где находится, будет сложно. Так что рекомендую все же указывать разные каталоги:
PAPERLESS_CONSUMPTION_DIR="/opt/paperless/paper_in"
PAPERLESS_DATA_DIR="/opt/paperless/data"
PAPERLESS_MEDIA_ROOT="/opt/paperless/media"
В следующей строке, указывается ключ для создания токенов сеанса. Раскомментируйте (удалив символ #) и измените значения на безопасные, особенно, если сервер будет иметь доступ в интернет:
PAPERLESS_SECRET_KEY="change-me"
Если вы используете reverse прокси, то это необходимо указать в следующем параметре
PAPERLESS_URL=https://example.com
Это необходимый минимум для начала работы приложения. В конфигурационном файле paperless используется много различных параметров, с их описанием вы можете ознакомится на официальном сайте приложения по адресу: https://docs.paperless-ngx.com/configuration/
Сохраняем изменения и выходим из текстового редактора.
Шаг 6. Создаем каталоги для данных.
Для хранения данных, на предыдущем шаге, мы указали каталоги: paper_in, data, media. Для того, чтобы paperless мог пользоваться этими каталогами, необходимо их создать:
mkdir /opt/paperless/paper_in
mkdir /opt/paperless/data
mkdir /opt/paperless/media
И, если это необходимо, сменить права на эти каталоги
sudo chown paperless:paperless /opt/paperless/media
sudo chown paperless:paperless /opt/paperless/data
sudo chown paperless:paperless /opt/paperless/paper_in
Шаг 7. Установка python зависимостей.
В каталоге, куда мы распаковали наше приложение имеется файл «requirements.txt». Для того, чтобы установить все эти зависимости в домашний каталог нашего приложения, воспользуемся следующей командой:
sudo -Hu paperless pip3 install -r requirements.txt
Шаг 8. Установка базы данных.
Создадим базу данных следующей командой:
sudo -Hu paperless python3 /opt/paperless/src/manage.py migrate
А также нам нужен пользователь, который создается следующей командой:
sudo -Hu paperless python3 /opt/paperless/src/manage.py createsuperuser
Шаг 9. Создание сервиса paperless.
Теперь создадим юнит systemd для того, чтобы можно было управлять paperless. Создаем файл от имени root удобным для вас редактором:
vi /etc/systemd/system/paperless-webserver.service
И вносим в него следующее содержимое:
[Unit]
Description=Paperless webserver
After=network.target
Wants=network.target
Requires=redis.service
#Requires=paperless-webserver.socket
[Service]
User=paperless
Group=paperless
WorkingDirectory=/opt/paperless/src
ExecStart=usr/local/bin/gunicorn -c /opt/paperless/gunicorn.conf.py paperless.asgi:application
[Install]
WantedBy=multi-user.target
Затем создадим еще один юнит для консумера
vi /etc/systemd/system/paperless-consumer.service
Со следующим содержанием:
[Unit]
Description=Paperless consumer
Requires=redis.service
[Service]
User=paperless
Group=paperless
WorkingDirectory=/opt/paperless/src
ExecStart=python3 manage.py document_consumer
[Install]
WantedBy=multi-user.target
Теперь запустим наши сервисы:
systemctl daemon-reload
systemctl start paperless-webserver paperless-consumer
Результат.
Все что касается настройки paperless сделано. Выполнив все шаги, мы получаем на 8000 порту, работающее приложение. Давайте зайдем на наш сервер и посмотрим, что же там. Вводим в адресную строку браузера ip нашего сервера:8000
И попадаем на страницу авторизации paperless. Вот и все, можно работать с ним. А еще можно настроить nginx как reverse прокси и ходить к нему по имени из глобальной сети, но это уже совсем другая история, а на этом пока все.
Was this helpful?
0 / 0