Установка Paperless · 4 min read · Sep 25, 2025

Как установить Paperless с Nginx на Debian

Paperless — это приложение на Python, которое обрабатывает отсканированные документы, индексирует их и предоставляет их в удобном веб-интерфейсе. В этом руководстве мы установим Paperless с обратным прокси-сервером Nginx HTTPS на Debian 10.

  • Система Debian 10, на которой у вас есть доступ root.
  • Зарегистрированное доменное имя, указывающее на ваш сервер.

Все команды, показанные в этом документе, должны выполняться от имени root, если не указано иное.

Установите переменную окружения $VISUAL на текстовый редактор по вашему выбору. Например, чтобы использовать nano:

echo "export VISUAL=nano" >> ~/.bashrc
. ~/.bashrc

Paperless требует несколько программных компонентов для своей установки и работы. Установите их следующим образом:

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

Вы можете перечислить все доступные пакеты tesseract, используя:

apt list tesseract-ocr-*

Если вы не уверены, какой 3-буквенный код соответствует желаемому языку, обратитесь к этому Списку кодов ISO 639-2.

Хотя возможно запускать paperless от имени root, настоятельно рекомендуется использовать пользователя с низкими привилегиями и отключенной возможностью входа. Создайте пользователя и группу с именем paperless:

useradd -d /opt/paperless -M -r -s /bin/bash -U -p x paperless

Клонируйте репозиторий Paperless с Github в /opt/paperless

git clone https://github.com/the-paperless-project/paperless.git /opt/paperless

Передайте пользователю 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="secret"
#PAPERLESS_SECRET_KEY="change-me"

Если ваш сканер поддерживает отправку отсканированных документов по электронной почте, вы можете настроить paperless для автоматического их получения из входящих сообщений. Чтобы включить эту функцию, установите параметры PAPERLESSCONSUME_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

Переключитесь на пользователя paperless:

su - paperless

Создайте каталог для обработки:

mkdir /opt/paperless/paper_in

Создайте виртуальную среду Python. Это обеспечит стабильную и изолированную среду, в которой мы можем установить необходимые модули и версии Python для Paperless.

python3 -m virtualenv --python=/usr/bin/python3 venv

Активируйте ее:

. venv/bin/activate

Установите модули Python, необходимые для paperless:

pip3 install -r requirements.txt

Эта команда может занять некоторое время. После завершения выполните следующие команды для инициализации базы данных и создания статических файлов для веб-сервиса:

cd src/
./manage.py migrate
./manage.py collectstatic

Создайте учетные данные для администратора веб-интерфейса, выполнив следующую команду и ответив на подсказки:

./manage.py createsuperuser

Перед настройкой полноценного веб-сервера и служб systemd мы попробуем запустить paperless вручную. На этом этапе вы все еще должны быть вошедшими как 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. В меню “ДОКУМЕНТЫ” нажмите “Документы”, чтобы просмотреть список документов. В течение нескольких минут отсканированный документ должен быть обработан и доступен.

Остановите paperless перед переходом к следующему шагу:

pkill -f manage.py

Мы создадим файлы единиц systemd, чтобы мы могли правильно управлять веб- и потребительскими службами. Выйдите обратно в оболочку root:

exit

Создайте файл единицы для веб-службы:

$VISUAL /etc/systemd/system/paperless-webserver.service

И введите следующее:

[Unit]
Description=Paperless Gunicorn Web Server
Requires=network.target
[Service]
User=paperless
Group=paperless
ExecStart=/opt/paperless/venv/bin/gunicorn --pythonpath=/opt/paperless/src paperless.wsgi -w 3 -b 127.0.0.1:8000
Restart=on-failure
[Install]
WantedBy=multi-user.target

ПРИМЕЧАНИЕ: Вы можете изменить количество рабочих процессов в команде ExecStart. Служба, показанная здесь, запускает Gunicorn с 3 рабочими (-w 3).

Затем создайте еще один файл единицы для процесса потребителя документов:

$VISUAL /etc/systemd/system/paperless-consumer.service

И введите следующее:

[Unit]
Description=Paperless Document Consumer
Requires=network.target
[Service]
User=paperless
Group=paperless
ExecStart=/opt/paperless/venv/bin/python3 /opt/paperless/src/manage.py document_consumer
Restart=on-failure
[Install]
WantedBy=multi-user.target

Запустите эти службы:

systemctl daemon-reload
systemctl start paperless-webserver.service paperless-consumer.service

Убедитесь, что обе они работают:

systemctl status paperless-webserver.service paperless-consumer.service

Если вы хотите, чтобы paperless запускался автоматически при загрузке системы, выполните команду:

systemctl enable paperless-webserver.service paperless-consumer.service

Установите Nginx и certbot:

apt update
apt install -y nginx certbot

Убедитесь, что Nginx включен и работает:

systemctl enable --now nginx.service

Получите сертификат 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 {
    listen 80;
    server_name your_domain;
    return 301 https://$server_name$request_uri;
    access_log /var/log/nginx/paperless_access.log;
    error_log /var/log/nginx/paperless_error.log;
}
server {
    listen 443 ssl;
    server_name your_domain;
    index index.html index.htm index.php;
    access_log /var/log/nginx/paperless_access.log;
    error_log /var/log/nginx/paperless_error.log;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
    location /static {
        autoindex on;
        alias /opt/paperless/static;
    }
    location / {
        proxy_set_header Host $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.service

Ваш экземпляр Paperless теперь должен быть доступен по адресу https://your_domain.

Поскольку системному пользователю paperless не нужен доступ к рабочей оболочке после первоначальной настройки, мы можем изменить его на /usr/sbin/nologin:

usermod -s /usr/sbin/nologin paperless

Если веб-сервер Gunicorn не удается запустить с сообщением об ошибке [ERROR] Connection in use, проверьте наличие процессов, уже связанных с портом 8000/tcp:

ss -lntp

Убейте/отключите проблемный процесс, если это необходимо, или измените /etc/systemd/system/paperless-webserver.service и /etc/nginx/sites-enabled/paperless, чтобы использовать другой сетевой порт для Gunicorn.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.