UbuntuにPaperless-ngxを構築して書類を電子化管理する方法

セルフホスト

この記事のポイント

  • 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-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
Ubuntu 24.04でのDocker / Docker Composeバージョン確認(実測)
Ubuntu 24.04でのDocker / Docker Composeバージョン確認(実測)

Dockerをインストールする

Paperless-ngxの推奨セットアップ方法はDocker Composeです。Ubuntuにまだ入っていない場合はインストールします。

手順1:パッケージを更新してDockerをインストールする




ubuntu@linuxlab: ~
$ sudo apt update && sudo apt upgrade -y
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グループに追加します。




ubuntu@linuxlab: ~
$ sudo usermod -aG docker $USER
$ 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を作成する




ubuntu@linuxlab: ~
$ mkdir -p ~/paperless-ngx && cd ~/paperless-ngx
$ 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を起動する




ubuntu@linuxlab: ~/paperless-ngx
$ docker-compose up -d
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分かかります。しばらく待ってから次に進んでください。

Paperless-ngx v2.20.15 コンテナ内バージョン確認(実測)
Paperless-ngx v2.20.15 コンテナ内バージョン確認(実測)

ブラウザからアクセスして初期設定する

http://サーバーのIPアドレス:8000(ローカルならhttp://localhost:8000)にブラウザでアクセスします。

手順5:ログイン画面でサインインする

Paperless-ngxログイン画面(実撮影)
Paperless-ngxログイン画面(実撮影)

ログイン画面が表示されます。docker-compose.ymlPAPERLESS_ADMIN_USERPAPERLESS_ADMIN_PASSWORDで設定したアカウントでサインインします。

初回ログイン後はすぐに設定画面でパスワードを変更しましょう。VPSで公開する場合、adminという弱いパスワードのまま放置するのは危険です。

手順6:ダッシュボードを確認する

Paperless-ngxダッシュボード(実撮影)
Paperless-ngxダッシュボード(実撮影)

ログイン後のダッシュボードには「未処理の文書」「最近追加した文書」「保存された検索」などのウィジェットが表示されます。初期状態では文書がゼロなので、次のステップで実際に書類をアップロードしてみましょう。

文書をアップロードして管理する

手順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.ymlPAPERLESS_TESSERACT_LANGUAGESjpnを追加するか、PAPERLESS_OCR_LANGUAGEengのみにして起動してください。




ubuntu@linuxlab: ~/paperless-ngx
SystemCheckError: The selected ocr language jpn is not installed.
# 解決策: PAPERLESS_TESSERACT_LANGUAGES を追加する
$ nano docker-compose.yml
# webserver の environment に追加:
PAPERLESS_TESSERACT_LANGUAGES: jpn
$ docker-compose down && docker-compose up -d

②コンテナは起動しているのにブラウザでアクセスできない

ファイアウォールでポート8000が閉じている場合があります。




ubuntu@linuxlab: ~
$ sudo ufw status
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のセットアップから試してみると手軽です。

あわせて読みたい:

コメント

タイトルとURLをコピーしました