Установка 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.
Get new posts in your inbox
No spam. Unsubscribe anytime.