Как установить Paperless с Nginx на Debian
Требования
- Система Debian 10, к которой у вас есть root-доступ
- Зарегистрированное доменное имя указывает на ваш сервер.
Все команды, показанные в этом документе, должны выполняться как root, если не указано иное.
Установите переменную среды $VISUAL в текстовый редактор по вашему выбору. Например, для использования nano:
echo "export VISUAL=nano" >> ~/.bashrc ~/.bashrc
Шаг 1: Установка зависимостей
Для его установки и эксплуатации требуется несколько программных компонентов. Установите их следующим образом:
apt update apt install -y gnupg2 python3 python3-dev python3-pip python3-virtualenv tesseract-ocr tesseract-ocr-eng unpaper imagemagick libpoppler-cpp-dev optipng git gcc g++Если вы собираетесь работать с документами на языках, отличных от английского, установите соответствующие языковые файлы Tesseract. Например, для французского и испанского:
apt install -y tesseract-ocr-fra tesseract-ocr-spa
Вы можете перечислить все доступные пакеты тессеракта, используя:
apt list tesseract-ocr-*Если вы не уверены, какой 3-буквенный код соответствует желаемому языку, обратитесь к этому списку кодов ISO 639-2.
Шаг 2: Создание пользователя системы
Несмотря на то, что можно запускать безбумажный как root, настоятельно рекомендуется использовать пользователя с низкими привилегиями и отключенным входом. Создайте пользователя и группу под названием paperless:useradd -d/opt/paperless -M -r -s/bin/bash -U -p x paperless
Шаг 3: Установка Paperless
Клонировать репозиторий Paperless Github в /opt/paperless
git clone https://github.com/the-paperless project/paperless.git /opt/paperless
Предоставьте безбумажному пользователю право собственности на этот каталог:
chown -R paperless:paperless /opt/paperless
Копировать включённый образец конфигурации в качестве отправной точки:
cp/opt/paperless/paperless.conf.example/etc/paperless.conf
Откройте его в текстовом редакторе:
$VISUAL /etc/paperless.conf
Выберите каталог, из которого Paperless проглотит отсканированные документы, и установите параметр PAPERLESS CONSUMPTION DIR соответственно:
PAPERLESS CONSUMPTION DIR="/opt/paperless/paper in"
Найти, отключить (путем удаления символа #) и изменить значения следующих строк на что-то безопасное:
#PAPERLESS PASSPHRASE="секретно" #PAPERLESS SECRET KEY="изменить меня"Если ваш сканер поддерживает отправку отсканированных документов по электронной почте, вы можете автоматически проглотить их из получающего почтового ящика. Чтобы включить эту функцию, установите PAPERLESS CONSUME MAIL * опции. По соображениям безопасности рекомендуется создать почтовый аккаунт, посвященный Paperless. Например:
PAPERLESS CONSUME MAIL HOST="imap.example.com" PAPERLESS CONSUME MAIL PORT="993" PAPERLESS CONSUME MAIL USER="[email protected]" PAPERLESS CONSUME MAIL PASS="imap password"
Сохранить изменения и выйти, затем изменить владельца этого файла на paperless и ужесточить его разрешения:
chown paperless:paperless /etc/paperless.conf chmod 0400 /etc/paperless.conf
Переключитесь на безбумажный пользователь:
su - безбумажный
Создать каталог потребления:
mkdir/opt/paperless/paper inСоздать виртуальную среду Python. Это обеспечит стабильную и изолированную среду, в которой мы сможем установить конкретные модули и версии Python, требуемые Paperless.
python3 -m virtualenv -python=/usr/bin/python3 venv
Активировать:
. venv/bin/activate
Установите модули Python, требуемые безбумажными:
pip3 install -r requirements. txt
На это может уйти некоторое время. После завершения запустите следующие команды для инициализации базы данных и создания статических файлов для веб-службы:
cd src/ ./manage.py скачать ./manage.py collectstatic
Создать учетные данные для учетной записи администратора веб-интерфейса, запустив следующую команду и отвечая на подсказки:
./manage.py createuperuser
Шаг 4: Начальное тестирование
Прежде чем настроить надлежащий веб-сервер и системные службы, мы постараемся работать без бумаги вручную. На этом этапе вы все равно должны войти в систему как paperless в виртуальной среде python.Начать работу с веб-сервером и клиентом документа в фоновом режиме:
./manage.py runserver 0.0.0.0:8000 & ./manage.py document consumer &
Поместите любой отсканированный документ в каталог потребления, сконфигурированный на шаге 3. Например:
wget https://i.imgur.com/DPr5wWG.jpg -O/opt/paperless/paper in/test1.jpg
Просмотрите http://IP or DOMAIN:8000/ и войдите в систему с учетными данными, выбранными на этапе 3. В меню «Документы» нажмите на «Документы», чтобы просмотреть список документов. В течение нескольких минут отсканированный документ должен быть обработан и доступен.
Прекратите безбумажную работу, прежде чем перейти к следующему шагу:
pkill -f manage.py
Шаг 5: Системные услуги
Мы создадим системные файлы, чтобы мы могли правильно управлять веб-сервисами и потребительскими услугами. Выход обратно в корневую оболочку:выход
Создать единичный файл для веб-сервиса:
$VISUAL/etc/systemd/system/paperless-webserver.service
И введите следующее:
[править править код] Безбумажный веб-сервер Gunicorn Требуется =network.target [Услуга] Пользователь = Paperless Группа = безбумажный ExecStart=/opt/paperless/venv/bin/gunicorn --pythonpath=/opt/paperless/src paperless.wsgi -w 3 -b 127.0.0.1:8000 Перезагрузка = отказ [Установить] WantedBy=multi-user.target
Примечание: Вы можете изменить количество рабочих процессов в команде ExecStart. Сервис, показанный здесь, запускает Gunicorn с 3 рабочими (-w 3).
Далее, создайте еще один файл для пользовательского процесса документа:
$VISUAL/etc/systemd/system/paperless-consumer.service
И введите следующее:
[править править код] Безбумажный документ Потребитель Требуется =network.target [Услуга] Пользователь = Paperless Группа = безбумажный ExecStart=/opt/paperless/venv/bin/python3/opt/paperless/src/manage.py document consumer Перезагрузка = отказ [Установить] WantedBy=multi-user.target
Запуск этих сервисов:
systemctl daemon-reload systemctl start paperless-webserver.service Безбумажный потребитель.service
Убедитесь, что они оба работают:
systemctl status paperless-webserver.service paperless-consumer. обслуживание
Если вы хотите, чтобы безбумажная система запускалась автоматически при запуске системы, выполните команду:
systemctl позволяет безбумажно-webserver.service безбумажно-потребителю. обслуживание
Шаг 6: Обратный прокси-сервер Nginx и HTTPS
Установить Nginx и certbot:
apt update Установить -y nginx certbot
Убедитесь, что Nginx включен и работает:
systemctl enable --now nginx. обслуживание
Получить сертификат Let's Encrypt для вашего домена с помощью certbot:
certbot certonly --webroot --webroot-path/var/www/html -d your domain
Отключить файл конфигурации Nginx по умолчанию и открыть новый:
rm/etc/nginx/sites-enabled/default $VISUAL /etc/nginx/sites-available/paperless
Введите следующее, замените your domain своим доменным именем:
server {
слушать 80;
server name your domain;
возврат 301 https://$server name$request uri;
access log/var/log/nginx/paperless access.log;
error log /var/log/nginx/paperless error.log
?
Сервер {
слушать 443 ssl;
server name your domain;
индекс index.html index.htm index.php;
access log/var/log/nginx/paperless access.log;
error log /var/log/nginx/paperless error.log
ssl на;
ssl certificate /etc/letsencrypt/live/your domain/fullchain.pem;
ssl certificate key/etc/letsencrypt/live/your domain/privkey.pem;
Местоположение/статическое {
автоиндекс;
alias /opt/paperless/static;
?
местоположение / {
proxy set header Хост $http host
proxy set header X-Real-IP $remote addr
proxy set header X-Forwarded For $proxy add x forwarded for
proxy set header X-Forwarded-Proto $scheme
proxy pass http://127.0.0.1:8000;
?
?
Включить эту конфигурацию, связавшись с ней в sites-enabled Каталог Nginx и проверка на наличие ошибок:
ln -s/etc/nginx/sites-available/paperless/etc/nginx/sites-enabled nginx-t
Загрузить изменения:
systemctl reload nginx. обслуживание
Ваш безбумажный экземпляр теперь должен быть доступен по адресу https://your domain.
Шаг 7: Улучшения
Поскольку пользователю безбумажной системы не нужен доступ к рабочей оболочке после начальной настройки, мы можем изменить ее на /usr/sbin/nologin:
usermod -s/usr/sbin/nologin безбумажный
Устранение неполадок
Если веб-сервер Gunicorn не запускается с сообщением об ошибке [ERROR] Подключение в использовании, проверьте наличие любых процессов, уже связанных с портом 8000/tcp:
ss -lntp
Убить/Отключить процесс нарушения, если это необходимо, или изменить /etc/system/system/paperless-webserver.service и /etc/nginx/sites-enabled/paperless, чтобы использовать другой сетевой порт для Gunicorn.