PostgreSQL版が混ざっていたComposeをSQLite版へ変更しました。実際に構築し直し、動作確認した構成です。

Paperless-ngxは、紙の書類をデジタル化して管理できるドキュメント管理システムです。
スキャンした書類を保存するだけでなく、OCRによって書類の文字を検索したり、タグや日付などで整理したりできます。
そんなPaperless-ngxをSynology NASで使ってみたいと思い、Dockerでインストールしてみました。
今回は、Docker Composeを使ってPaperless-ngxをインストールする方法を紹介します。実際に使用したdocker-compose.ymlも掲載し、それぞれの設定についても分かりやすく解説していきます。
※Paperless-ngxは、ファイルそのものを管理する「ファイル管理ソフト」ではありません。
Synology NASでDocker環境の構築するためのContainer Managerの基本設定や使い方を記事にしました。また、私が実際にDockerにインストールしているアプリを紹介しています。
Synology NASにPaperless-ngxをDocker-Composeでインストール
パッケージセンターから「Container Manager」をインストール
SynologyNASではパッケージセンターから「Container Manager」がインストールできます。インストールが完了したら、メニュー内にContainer Managerのアイコンが作成されています。
フォルダ作成
Container Managerをダウンロードすると共有フォルダに「docker」が作成されています。File Stationで「docker」に「paperless」フォルダを作り、さらにその中に「data」「media」「redisdata」、3つのサブフォルダを作ります。
Paperless-Scan共有フォルダ(受け取り口)を作成
Paperless-Scan共有フォルダは必須ではありません。作成しない場合は、Dockerの共有フォルダ内に取り込み用のconsumeフォルダを用意して使用できます。
本記事では、プリンターやスマートフォンから書類を簡単に投入できるよう、Paperless専用の「受け取り口」として「Paperless-Scan」共有フォルダを作成します。
Paperless-Scan=保管庫ではなく、スキャナーやスマホからPaperless-ngxへ書類を渡すための専用ポストです。
「Paperless-Scan」共有フォルダを作成する手順
- DSMにログインし、「コントロールパネル」を開く
- 「共有フォルダ」をクリック
- 「作成」をクリック
- 共有フォルダ名に「Paperless-Scan」と入力
- 必要に応じて説明を入力。空欄で可。「次へ」をクリック
- 「追加的なセキュリティ対策を有効化」はスキップで可。「次へ」をクリック
- ユーザー権限を設定する
・Paperless-ngxで使用するユーザーに読み取り/書き込み権限を付与 - 「適用」をクリック
UID/GIDを確認
UIDとGIDは、NAS上のユーザーとグループを識別する番号です。
Paperless-ngxがNASのフォルダにアクセスする際、ファイルやフォルダの権限を合わせるために使用します。
確認したUIDとGIDは、Docker Composeの「USERMAP_UID」と「USERMAP_GID」に入力します。
そのため、Paperless-ngxを設定する前に、自分のNASユーザーのUIDとGIDを確認しておきます。
コントロールパネル → タスクスケジューラ → 作成 → 予約タスク → ユーザー指定のスクリプト と進みます。
「全般」は、次のように設定します。
- タスク名:Check UID GID
- ユーザー:Paperless-ngxのファイルを扱うNASユーザー(例:YokiYoki)
- 有効:チェックあり
次に「タスク設定」のユーザー指定のスクリプトに、以下を入力します。
id > /volume1/docker/paperless/uid-gid.txt
このスクリプトは、ユーザーのUIDとGIDをuid-gid.txtに書き出すためのものです。
[OK]でタスクを作成しただけでは、uid-gid.txtは作成されません。
タスク一覧に戻ったら、「Check UID GID」を選択 → 上の[実行]を押します。
実行後、File Stationで「docker」共有フォルダの「paperless」内を確認します。
uid-gid.txtが作成されていれば成功です。
このあとファイルを開いてUIDとGIDを確認し、Docker ComposeのUSERMAP_UIDとUSERMAP_GIDに入力します。UIDとGIDには、それぞれ確認した番号を入力します。
Secret Keyを作成
DSMの コントロールパネル → タスクスケジューラ → 作成 → 予約タスク → ユーザー指定のスクリプト を開きます。
「全般」は、タスク名を Paperless Secret Key、ユーザーを root にしておけばOKです。
「タスク設定」の ユーザー指定のスクリプト に、次を入力します。
openssl rand -hex 32 > /volume1/docker/paperless/secret-key.txt
保存したら、タスク一覧で「Paperless Secret Key」を選択 → 上の[実行]を押します。
実行後、File Stationで「docker」共有フォルダの「paperless」内を確認します。
secret-key.txtが作成されていれば成功です。
ファイルを開くと、長いランダムな文字列が1行入っています。
この文字列をDocker Composeの「PAPERLESS_SECRET_KEY」に入力します。
※PAPERLESS_SECRET_KEYには、確認した文字列をそのまま入力します。
管理者アカウントを設定
Paperless-ngxの管理画面にログインするための管理者アカウントを設定します。
Docker Composeの次の2項目に、自分で決めたユーザー名とパスワードを入力します。
PAPERLESS_ADMIN_USER: "自分で決めたユーザー名"
PAPERLESS_ADMIN_PASSWORD: "自分で決めた管理者パスワード"
- PAPERLESS_ADMIN_USER:Paperless-ngxにログインするときのユーザー名(例:yokiyoki)
- PAPERLESS_ADMIN_PASSWORD:そのユーザーのログインパスワード
ここで設定したユーザー名とパスワードは、Paperless-ngxの管理画面にログインするときに使用します。忘れないように控えておきましょう。
HTTPS化の設定
この設定は任意です。
HTTPS化を設定しない場合でも、Paperless-ngxは「http://ローカルIP:8000」でログインして使用できます。
自宅のLAN内だけで使用する場合や、リモートアクセスを利用しない場合は、HTTPS化を設定しなくても構いません。
外出先などからPaperless-ngxにアクセスする場合は、HTTPS化しておくと安心です。
HTTPSでアクセスする場合は、PAPERLESS_URLを設定します。
Docker Composeの次の部分に、リバースプロキシで設定したPaperless-ngxのHTTPSアドレスを入力します。
PAPERLESS_URL: "https://自分のPaperless-ngxのアドレス:ポート番号"
- PAPERLESS_URL:リバースプロキシ後のPaperless-ngxのHTTPSアドレス
ポート番号は、自分の環境で設定したHTTPSポートを入力します。
私の環境では、HTTPSのポートに8443を使用しています。
例として
https://SynologyのDDNSホスト名:8443https://TailscaleのDNS名:8443
※リバースプロキシを使ったHTTPS化については、こちらの記事で詳しく解説しています。
Docker Composeを完成させる
Container Managerを開き、「プロジェクト」→「作成」を選択します。
次のように設定します。
- プロジェクト名:
paperless(大文字は使用できません) - パス:File Stationの「docker」共有フォルダに作成した「paperless」フォルダ
- docker-compose.ymlを作成:選択
下記のComposeは、ChatGPT(チャッピー)と一緒に作成した、実際に使用している完成版です。
入力欄にカーソルを合わせ、キーボードで「Ctrl」+「V」を押してComposeを貼り付けます。
※マウスの右クリックでは貼り付けできません。
Composeを貼り付けたら、
- UID/GID
- Secret Key
- 管理者アカウント(ユーザー名とパスワード)
- リバースプロキシで設定したPaperless-ngxのHTTPSアドレス
など、必要な項目を自分の環境に合わせて入力します。
入力が終わったら「次へ」へ進みます。
「ウェブポータルをWeb Station経由でセットアップ」は、チェックを入れずにそのまま「次へ」へ進み、最後に「完了」を選択します。
※2026.9.11 SQLite版へ変更しました。実際に構築し直し、動作確認した構成です。まずはSQLiteで始め、将来的に必要になった場合はPostgreSQLへ移行することもできます。
services:
broker:
image: docker.io/valkey/valkey:9-alpine
restart: unless-stopped
volumes:
- /volume1/docker/paperless/redisdata:/data
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- broker
ports:
- "8000:8000"
volumes:
- /volume1/docker/paperless/data:/usr/src/paperless/data
- /volume1/docker/paperless/media:/usr/src/paperless/media
# プリンター・Genius Scan用
- /volume1/Paperless-Scan:/usr/src/paperless/consume
environment:
# Valkey
PAPERLESS_REDIS: redis://broker:6379
# SQLite
PAPERLESS_DBENGINE: sqlite
# Synologyのユーザー・グループ
USERMAP_UID: 自分のUID
USERMAP_GID: 自分のGID
# Paperlessの秘密鍵
PAPERLESS_SECRET_KEY: "ここにSecret Keyを貼り付け"
# タイムゾーン
PAPERLESS_TIME_ZONE: Asia/Tokyo
# OCR
PAPERLESS_OCR_LANGUAGE: jpn
PAPERLESS_OCR_LANGUAGES: jpn
# consume内のサブフォルダも監視
PAPERLESS_CONSUMER_RECURSIVE: "true"
# PaperlessのURL
PAPERLESS_URL: "https://自分のDDNSあるいはDNS:ポート番号"
# 管理者アカウント
PAPERLESS_ADMIN_USER: "管理者名"
PAPERLESS_ADMIN_PASSWORD: "パスワード"
まとめ
今回は、Synology NASにDocker Composeを使ってPaperless-ngxを構築する方法を紹介しました。
Paperless-ngxを使うと、スキャンした書類をNASに保存するだけでなく、OCRによって書類の文字を検索できるようになります。
今回の構成では、Synology Driveなどでスキャンした書類を「Paperless-Scan」フォルダに入れるだけで、Paperless-ngxに取り込めるようにしています。
紙の書類をPDFとして保存しておけば、あとから必要な書類を探すときにも便利です。
私自身、名刺管理ではSynology Driveを使っていますが、A4サイズの書類や領収書など、あとから検索したい書類にはPaperless-ngxを使っていこうと思います。
Docker Composeでの構築は少し難しく感じるかもしれませんが、Composeファイルを用意してしまえば、設定内容を確認しながら構築できます。
Paperless-ngxの具体的な使い方や、書類の取り込み・検索などについては、別の記事で紹介しまています。
【補足】
下記をcomposeの設定から削除し
# Paperless-Scan共有フォルダ(受け取り口)
- /volume1/Paperless-Scan:/usr/src/paperless/consume
代わりに以下を追加します。
/volume1/docker/paperless/consume:/usr/src/paperless/consume
そして、docker/paperlessフォルダ内に「consume」フォルダを作成します。
作成したあとは、スキャンしたファイルを「consume」フォルダに入れると、Paperless-ngxが自動的に取り込みます。
※「consume」はPaperless-ngxへの受け取り口であり、書類を長期保管するためのフォルダではありません。
❖ DriveからPaperless-ngxへ取り込むための設定 ❖
- File Stationを開く
- homes → 自分のユーザー名を開く
- その中に「Paperless-Scan」フォルダを作成する
- Docker Composeのvolumes:に、次の1行を追加する(自分のユーザー名を入力してください)
- /volume1/homes/ユーザー名/Paperless-Scan:/usr/src/paperless/consume_mount
※Docker Composeの設定変更は、プロジェクトを停止してから「YAML構成」で行います。
- Docker Composeを再起動する
- Synology Driveのマイファイル「Paperless-Scan」にファイルを保存
- Paperless-ngxに取り込まれることを確認
❖ 「mount」フォルダについて ❖
Docker Composeの設定をすると、共有フォルダ「Paperless-Scan」の中に「mount」フォルダが作成されます。
これは、個人フォルダの「Paperless-Scan」と共有フォルダの「Paperless-Scan」をつなぐための、トンネルのような役割をしています。実際に使用するフォルダではありません。
個人フォルダ側のPaperless-Scanにファイルを保存すると、mountを経由して共有フォルダ側のPaperless-Scanにつながり、Paperless-ngxが受け取ります。
個人フォルダ「Paperless-Scan」
↓
mount(つなぐためのトンネル)
↓
共有フォルダ「Paperless-Scan」
↓
Paperless-ngx



