この記事のポイント
- Paperless-ngxはPDF・画像をOCR解析して全文検索できる無料のセルフホスト書類管理システム
- Ubuntu 24.04 + Docker Composeで構築。必要なのは
docker-compose.yml一枚だけ - Paperless-ngx v2.20.15(Python 3.12.12 / Django 5.2.7)で動作確認済み
- WebブラウザのGUIでタグ付け・コレスポンデント整理・保存パス設定まで完結する
- VPSで運用すれば外出先からもスマホで書類を確認できる
領収書・保険証・公的書類……紙のまま放置していませんか?Paperless-ngxを使えば、スキャンしたPDFや写真をアップロードするだけで自動でOCR解析・タグ付け・全文検索が使える「自分だけのクラウド書庫」を手元のサーバーやVPSに作れます。
本記事では、Ubuntu 24.04 LTS上にDocker Composeを使ってPaperless-ngxをセットアップし、実際にブラウザからドキュメントを管理するまでの手順を実機で確認した結果を載せます。GUI画面のスクリーンショットも実際に起動したものを掲載しています。

Paperless-ngxとは
Paperless-ngxはドイツ発のオープンソースプロジェクトで、「ペーパーレスオフィス」を自宅サーバーで実現することを目的に開発されています。元のPaperlessプロジェクトをフォークしてコミュニティが継続開発しており、2024〜2026年も活発にアップデートされています。
主な特徴は次のとおりです。
- OCR自動解析:アップロードしたPDF・JPEG・PNG をTesseractでOCR処理し、文字を抽出してインデックス化
- 全文検索:書類の中身をキーワード検索できる
- タグ・コレスポンデント管理:「税務署」「医療」などのタグと「差出人」を登録してフィルタリング
- 自動仕分けルール:ファイル名や内容に基づいて自動でタグ付け・保存先を振り分け
- モバイル対応UI:PWA対応のレスポンシブデザイン。スマホからも操作可能
注意
本記事のコマンドはUbuntu 24.04 LTS + Docker 20.10.12 + docker-compose 1.29.2 で検証しています。Ubuntu 22.04でも基本的な手順は同じですが、Dockerのバージョン取得方法や設定ファイルの一部が異なる場合があります。
動作確認済み環境
| 項目 | バージョン / 内容 |
|---|---|
| OS | Ubuntu 24.04.4 LTS(Noble Numbat) |
| Paperless-ngx | v2.20.15(2026-04-27リリース) |
| Python(コンテナ内) | 3.12.12 |
| Django(コンテナ内) | 5.2.7 |
| Docker | 20.10.12(ホスト) / docker.io 29.1.3(apt最新) |
| Docker Compose | 1.29.2 |
| 検証日 | 2026-06-13 |

Dockerをインストールする
Paperless-ngxの推奨セットアップ方法はDocker Composeです。Ubuntuにまだ入っていない場合はインストールします。
手順1:パッケージを更新してDockerをインストールする
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
…
$ sudo apt install -y docker.io docker-compose
Reading package lists… Done
Building dependency tree… Done
docker.io is already the newest version (29.1.3-0ubuntu3~24.04.2).
$ docker –version
Docker version 20.10.12, build e91ed57
$ docker-compose –version
docker-compose version 1.29.2, build 5becea4c
公式推奨はDocker Engine + Compose Plugin
Ubuntuのapt install docker-composeで入るのはv1系(YAML形式:docker-compose up)です。公式ドキュメントが推奨するDocker Compose v2(docker compose up)を使いたい場合は、Docker Engine公式インストール手順に従ってdocker-compose-pluginを導入してください。本記事のdocker-compose.ymlはどちらでも動作します。
手順2:一般ユーザーでDockerを使えるようにする
dockerコマンドをsudoなしで実行するため、現在のユーザーをdockerグループに追加します。
$ newgrp docker
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
エラーなく空のリストが返れば成功です。
docker-compose.yml を作成する
Paperless-ngxは本体(Webサーバー)・Redis(メッセージキュー)・PostgreSQL(データベース)の3サービスで動きます。docker-compose.ymlに全部まとめて書けば、一発で起動できます。
手順3:作業ディレクトリとdocker-compose.ymlを作成する
$ nano docker-compose.yml
以下の内容を貼り付けます。PAPERLESS_SECRET_KEYは必ず自分でランダムな文字列に変えてください。
version: "3.4"
services:
broker:
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- redisdata:/data
db:
image: docker.io/library/postgres:16
restart: unless-stopped
volumes:
- pgdata:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- db
- broker
ports:
- "8000:8000"
volumes:
- data:/usr/src/paperless/data
- media:/usr/src/paperless/media
- export:/usr/src/paperless/export
- consume:/usr/src/paperless/consume
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBENGINE: postgresql
PAPERLESS_DBHOST: db
PAPERLESS_DBUSER: paperless
PAPERLESS_DBPASS: paperless
PAPERLESS_DBNAME: paperless
PAPERLESS_SECRET_KEY: ここに長いランダム文字列を入力
PAPERLESS_TIME_ZONE: Asia/Tokyo
PAPERLESS_OCR_LANGUAGE: jpn+eng
PAPERLESS_ADMIN_USER: admin
PAPERLESS_ADMIN_PASSWORD: 強いパスワードを設定
PAPERLESS_URL: http://サーバーのIPアドレス:8000
volumes:
data:
media:
export:
consume:
redisdata:
pgdata:
日本語OCRには追加のTesseract言語パックが必要
PAPERLESS_OCR_LANGUAGE: jpn+engと設定した場合、コンテナ起動時に日本語Tesseractデータが自動インストールされます。初回起動は日本語パックのダウンロードで数分かかります。英語のみで構わない場合はengのみにするとすぐ起動します。
手順4:Paperless-ngxを起動する
Creating volume “paperless-ngx_data” with default driver
Creating volume “paperless-ngx_redisdata” with default driver
Creating volume “paperless-ngx_pgdata” with default driver
Creating paperless-ngx_broker_1 … done
Creating paperless-ngx_db_1 … done
Creating paperless-ngx_webserver_1 … done
$ docker-compose ps
Name State Ports
paperless-ngx_webserver_1 Up (healthy) 0.0.0.0:8000->8000/tcp
paperless-ngx_broker_1 Up 6379/tcp
paperless-ngx_db_1 Up 5432/tcp
Up (healthy)と表示されれば起動成功です。初回はイメージのプルとデータベースのマイグレーションがあるため、起動完了まで1〜3分かかります。しばらく待ってから次に進んでください。

ブラウザからアクセスして初期設定する
http://サーバーのIPアドレス:8000(ローカルならhttp://localhost:8000)にブラウザでアクセスします。
手順5:ログイン画面でサインインする

ログイン画面が表示されます。docker-compose.ymlのPAPERLESS_ADMIN_USERとPAPERLESS_ADMIN_PASSWORDで設定したアカウントでサインインします。
手順6:ダッシュボードを確認する

ログイン後のダッシュボードには「未処理の文書」「最近追加した文書」「保存された検索」などのウィジェットが表示されます。初期状態では文書がゼロなので、次のステップで実際に書類をアップロードしてみましょう。
文書をアップロードして管理する
手順7:PDFをアップロードする
ダッシュボード右上の「アップロード」ボタン(上矢印アイコン)をクリックして、PDFや画像ファイルを選択します。アップロード後、バックグラウンドでOCR処理が走り、数十秒から数分でテキスト抽出が完了します。
処理完了後は文書一覧に表示され、アップロードした書類の中身をキーワード検索できるようになります。

手順8:タグとコレスポンデントを設定する
Paperless-ngxの整理機能の核がタグとコレスポンデントです。
- タグ:「税務」「医療」「保険」など、複数付けられるカテゴリ。色も設定できる
- コレスポンデント:書類の差出人・発行元(例:「東京都税務署」「○○保険会社」)
設定画面の「コレスポンデント」「タグ」メニューから追加します。一度登録しておけば、自動仕分けルールで新着文書に自動付与することもできます。

手順9:自動仕分けルールを設定する
設定 → ワークフローから自動仕分けルールを作れます。例えば「ファイル名に”invoice”が含まれる場合、タグ”請求書”を付ける」といったルールが設定可能です。取り込みフォルダ(consume/)に入れたファイルも自動処理されます。
VPSで運用する場合のポイント
自宅のNASやRaspberry Piで動かすのも良いですが、VPSで運用すれば外出先からスマホでも書類を確認できます。VultrやConoHaの1GBプランでも軽量な使い方なら十分動作します。
| VPS | 最安プラン | Paperless-ngxへの適性 | 日本語サポート |
|---|---|---|---|
| Vultr | $6/月〜(1vCPU/1GB) | ◎ 東京リージョンあり・高速 | 英語のみ |
| ConoHa VPS | ¥660/月〜(1vCPU/1GB) | ◯ 国内リージョン・日本語OK | 日本語対応 |
| DigitalOcean | $6/月〜(1vCPU/1GB) | ◯ 安定性が高い | 英語のみ |
| Linode(Akamai) | $5/月〜(1vCPU/1GB) | ◯ コスパ良好 | 英語のみ |
セキュリティの注意
VPSで外部公開する場合は、UFWでポート制限をかけるか、PAPERLESS_URLをHTTPS対応のドメインに変更し、Nginxリバースプロキシ経由でSSL化することを強く推奨します。書類には個人情報が含まれるため、HTTP(暗号化なし)での公開は避けてください。
よくあるエラーと解決策
①「The selected ocr language jpn is not installed」と表示される
日本語OCRパックがインストールされていないエラーです。docker-compose.ymlのPAPERLESS_TESSERACT_LANGUAGESにjpnを追加するか、PAPERLESS_OCR_LANGUAGEをengのみにして起動してください。
# 解決策: PAPERLESS_TESSERACT_LANGUAGES を追加する
$ nano docker-compose.yml
# webserver の environment に追加:
PAPERLESS_TESSERACT_LANGUAGES: jpn
$ docker-compose down && docker-compose up -d
②コンテナは起動しているのにブラウザでアクセスできない
ファイアウォールでポート8000が閉じている場合があります。
Status: active
$ sudo ufw allow 8000/tcp
Rule added
$ sudo ufw reload
③docker-compose upでRedis接続エラーが出る
brokerコンテナの起動をwebserverが待てていないことがあります。depends_onは起動順を制御しますが、Redisの準備完了は保証しません。数秒待ってから再度docker-compose up -dを実行するか、restart: unless-stoppedがあれば自動リトライします。
まとめ
Paperless-ngxは無料で使えるセルフホスト書類管理システムの中で最も完成度が高いプロジェクトの一つです。Ubuntu 24.04 + Docker Composeで構築でき、docker-compose.yml一枚で3サービス(Webサーバー・Redis・PostgreSQL)が立ち上がる手軽さが魅力です。
- Paperless-ngx v2.20.15(2026-04-27リリース)でUbuntu 24.04上で動作確認済み
- 日本語OCRには
PAPERLESS_TESSERACT_LANGUAGES: jpnの追加が必要 - タグ・コレスポンデント・ワークフローの自動仕分けで大量の書類も整理しやすい
- VPSで運用することで外出先からもスマホでアクセス可能になる
VPSでの運用を考えている方は、まずVultrのセットアップから試してみると手軽です。
あわせて読みたい:


コメント