インストールガイド · 2 min read · Sep 25, 2025

DebianにNginxを使ってPaperlessをインストールする方法

Paperlessは、スキャンした文書を取り込み、インデックスを作成し、ユーザーフレンドリーなWebインターフェースで表示するPythonアプリケーションです。このチュートリアルでは、Debian 10にNginx HTTPSリバースプロキシを使用してPaperlessをインストールします。

  • rootアクセスがあるDebian 10システム。
  • サーバーを指す登録済みのドメイン名。

この文書に示されているすべてのコマンドは、特に指示がない限り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の仮想環境を作成します。これにより、Paperlessに必要な特定のPythonモジュールとバージョンをインストールできる安定した隔離された環境が提供されます。

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

それをアクティブにします:

. venv/bin/activate

Paperlessに必要なPythonモジュールをインストールします:

pip3 install -r requirements.txt

このコマンドはしばらく時間がかかる場合があります。完了したら、次のコマンドを実行してデータベースを初期化し、Webサービス用の静的ファイルを作成します:

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

Webインターフェースの管理者アカウントのログイン資格情報を作成するには、次のコマンドを実行し、プロンプトに応答します:

./manage.py createsuperuser

適切なWebサーバーとsystemdサービスを設定する前に、Paperlessを手動で実行してみます。この時点で、まだ仮想Python環境内のpaperlessとしてログインしている必要があります。

バックグラウンドでWebサーバーと文書消費者を起動します:

./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で選択した資格情報でログインします。「DOCUMENTS」メニューで「Documents」をクリックして文書リストを表示します。数分以内に、スキャンした文書が処理されて利用可能になるはずです。

次のステップに進む前にPaperlessを停止します:

pkill -f manage.py

Webおよび消費者サービスを適切に管理できるようにsystemdユニットファイルを作成します。rootシェルに戻ります:

exit

Webサービスのユニットファイルを作成します:

$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コマンドのワーカープロセスの数を変更することをお勧めします。ここに示されているサービスは、3つのワーカー(-w 3)でGunicornを起動します。

次に、文書消費者プロセスのための別のユニットファイルを作成します:

$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

certbotを使用してドメインのLet’s Encrypt証明書を取得します:

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

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。