インストールガイド · 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
. ~/.bashrcPaperlessのインストールと動作にはいくつかのソフトウェアコンポーネントが必要です。以下のようにインストールします。
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 paperlessPaperlessの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.confPaperlessがスキャンした文書を取り込むディレクトリを選択し、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.confpaperlessユーザーに切り替えます:
su - paperless消費ディレクトリを作成します:
mkdir /opt/paperless/paper_inPythonの仮想環境を作成します。これにより、Paperlessに必要な特定のPythonモジュールとバージョンをインストールできる安定した隔離された環境が提供されます。
python3 -m virtualenv --python=/usr/bin/python3 venvそれをアクティブにします:
. venv/bin/activatePaperlessに必要なPythonモジュールをインストールします:
pip3 install -r requirements.txtこのコマンドはしばらく時間がかかる場合があります。完了したら、次のコマンドを実行してデータベースを初期化し、Webサービス用の静的ファイルを作成します:
cd src/
./manage.py migrate
./manage.py collectstaticWebインターフェースの管理者アカウントのログイン資格情報を作成するには、次のコマンドを実行し、プロンプトに応答します:
./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次のステップに進む前にPaperlessを停止します:
pkill -f manage.pyWebおよび消費者サービスを適切に管理できるようにsystemdユニットファイルを作成します。rootシェルに戻ります:
exitWebサービスのユニットファイルを作成します:
$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.servicePaperlessをシステム起動時に自動的に開始したい場合は、次のコマンドを実行します:
systemctl enable paperless-webserver.service paperless-consumer.serviceNginxとcertbotをインストールします:
apt update
apt install -y nginx certbotNginxが有効で実行中であることを確認します:
systemctl enable --now nginx.servicecertbotを使用してドメインの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 paperlessGunicornウェブサーバーが[ERROR] Connection in useというエラーメッセージで起動に失敗した場合、ポート8000/tcpに既にバインドされているプロセスを確認します:
ss -lntp必要に応じて問題のあるプロセスを終了/無効にするか、/etc/systemd/system/paperless-webserver.serviceおよび/etc/nginx/sites-enabled/paperlessを修正してGunicorn用に別のネットワークポートを使用します。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。