0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

一人アドカレ 20日目: Papraの紹介

Posted at

イントロ

お家でドキュメント管理してみたいと思いませんか?データを外部に保存するのって怖いですよね...
有名どころで選ぶとPaperless-ngxとかなのですが、軽量でイマドキなものを探した結果、Papraになりました

と、こんな話の始め方をしていますが、全然ドキュメント管理の理解が乏しいです。
そういうわけで、契約書のPDF入れてるだけの感想になりますが、ご了承ください。

Papraの使い方

環境情報
$ docker version
Client: Docker Engine - Community
 Version:           29.1.3
 API version:       1.52
 Go version:        go1.25.5
 Git commit:        f52814d
 Built:             Fri Dec 12 14:49:51 2025
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          29.1.3
  API version:      1.52 (minimum version 1.44)
  Go version:       go1.25.5
  Git commit:        fbf3ed2
  Built:            Fri Dec 12 14:49:51 2025
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v2.2.0
  GitCommit:        1c4457e00facac03ce1d75f7b6777a7a851e5c41
 runc:
  Version:          1.3.4
  GitCommit:        v1.3.4-0-gd6d73eb8
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

前提条件

  • Docker がインストールされていること
  • Traefik が導入されていること(リバースプロキシサーバー)

手順

  1. compose.ymlを作成する

    domain.tldは自分のドメインに置き換えてください。

    services:
      papra:
        image: ghcr.io/papra-hq/papra
        container_name: papra
        restart: unless-stopped
        expose:
          - 1221
        volumes:
          - ./data:/app/app-data
        user: "${UID}:${GID}"
        env_file:
          - .env
        labels:
          traefik.enable: true
          traefik.http.services.papra.loadbalancer.server.port: 1221
          traefik.http.routers.papra.rule: Host(`papra.domain.tld`)
          traefik.http.routers.papra.entrypoints: websecure
          traefik.http.routers.papra.tls: true
          traefik.http.routers.papra.tls.certResolver: cloudflare
          traefik.docker.network: traefik-network
          glance.name: Papra
          glance.icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/papra.png
          glance.url: https://papra.domain.tld
          glance.description: The minimalistic document archiving platform
        networks:
          - traefik-network
    
    networks:
      traefik-network:
        external: true
    
  2. .envファイルを作成する

    UID=1000
    GID=1000
    
    DOCUMENTS_OCR_LANGUAGES="jpn,eng" # 日本語と英語のOCRを有効化
    APP_BASE_URL="https://papra.domain.tld"
    
    # Garageの設定
    DOCUMENT_STORAGE_DRIVER="s3"
    DOCUMENT_STORAGE_S3_BUCKET_NAME=""
    DOCUMENT_STORAGE_S3_REGION=""
    DOCUMENT_STORAGE_S3_ACCESS_KEY_ID=""
    DOCUMENT_STORAGE_S3_SECRET_ACCESS_KEY=""
    DOCUMENT_STORAGE_S3_ENDPOINT="https://s3.domain.tld"
    DOCUMENT_STORAGE_S3_FORCE_PATH_STYLE="true"
    # バケットに保存するデータの暗号化設定
    DOCUMENT_STORAGE_ENCRYPTION_IS_ENABLED="true"
    DOCUMENT_STORAGE_DOCUMENT_KEY_ENCRYPTION_KEYS=""
    
    # PocketIDの設定
    AUTH_IS_REGISTRATION_ENABLED="true" # 登録後、他のユーザーがいなければ無効化する
    AUTH_PROVIDERS_EMAIL_IS_ENABLED="false" # Emailログイン無効(OIDC only)
    AUTH_SECRET="some-random-string" # ランダムな文字列を設定する
    AUTH_PROVIDERS_CUSTOMS='[
      {
        "providerId": "pocket-id",
        "providerName": "Pocket ID",
        "providerIconUrl": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/pocket-id.png",
        "clientId": "",
        "clientSecret": "",
        "type": "oidc",
        "discoveryUrl": "https://auth.domain.tld/.well-known/openid-configuration",
        "scopes": ["openid", "profile", "email"]
      }
    ]'
    # https://papra.domain.tld/api/auth/oauth2/callback/<providerId> にリダイレクトされるような設定になる
    
    # SMTPの設定
    EMAILS_DRIVER="smtp"
    SMTP_HOST=""
    SMTP_PORT=""
    SMTP_USER=""
    SMTP_PASSWORD=""
    SMTP_SECURE="true"
    
  3. Papraを起動する

    docker compose up -d
    

Papraの感想

  • 良いところ
    • UIがイマドキで使いやすい
    • OIDC認証に対応している
    • GarageによるS3互換ストレージ対応
  • イマイチなところ
    • 日本語の読み取りが微妙?
      • 契約書のPDFを入れたところファイルの文字列全部が認識されなかった
        • ローカルで開いたPDFから文字をコピペしてPapra側に上書きしましたので、データの管理はできるようになります。
      • 求人情報や履歴書の認識は問題なかった

以上、Papraの紹介でした。
私自身があまりドキュメント管理を使う機会がなかったのでその点での視点が少なく申し訳ないです。とはいえコンテナ1つで簡単に始められるので、興味があれば使ってみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?