VPSにPaperclipをセルフホスティングする方法(2026年のステップバイステップガイド)
Paperclipは、利用可能な中でも最もクリーンなセルフホスト型のドキュメント管理システムの一つです。単一のDockerコンテナとして動作し、ファイルをローカルボリュームに保存し、ポート8080でWeb UIを公開します。このガイドでは、Linux VPS上での本番環境向けの完全なインストール手順を、サーバーの準備から最初のドキュメントアップロードまで丁寧に解説します。
必要条件
- Ubuntu 22.04 LTS または Debian 12 を稼働させているVPS(推奨)
- 少なくとも 1 vCPU、1GB RAM、20GBストレージ(OCRには2GB RAM推奨)
- SSH経由での Root または sudo アクセス
- ドメインまたはサブドメインがVPSのIPに向いていること(任意だがHTTPSには推奨)
推奨VPSオプション:
- Hetzner Cloud CX22 - €4.15/月、2 vCPU、4GB RAM、40GB NVMe
- Contabo VPS S - €5.99/月、4 vCPU、8GB RAM、200GB NVMe
ステップ1:サーバーの更新
apt update && apt upgrade -y
ステップ2:Dockerのインストール
curl -fsSL https://get.docker.com | sh
systemctl enable docker
systemctl start docker
Dockerが正常に稼働しているか確認:
docker --version
ステップ3:Docker Composeのインストール
apt install docker-compose-plugin -y
docker compose version
ステップ4:作業ディレクトリの作成
mkdir -p /opt/paperclip && cd /opt/paperclip
ステップ5:docker-compose.ymlの作成
nano /opt/paperclip/docker-compose.yml
以下の設定を貼り付けてください:
version: "3.8"
services:
paperclip:
image: paperclip/paperclip:latest
container_name: paperclip
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- paperclip_data:/data
environment:
- PAPERCLIP_SECRET_KEY=change_this_to_a_random_secret
- PAPERCLIP_OCR_ENABLED=true
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
volumes:
paperclip_data:
重要: change_this_to_a_random_secretの部分は、ランダムな文字列に置き換えてください。生成には次のコマンドを使用します:
openssl rand -hex 32
ステップ6:必要に応じてPostgreSQLの使用(SQLiteの代わりに)
マルチユーザーや本番環境向けにcomposeファイルを拡張します:
version: "3.8"
services:
db:
image: postgres:16-alpine
container_name: paperclip_db
restart: unless-stopped
environment:
POSTGRES_DB: paperclip
POSTGRES_USER: paperclip
POSTGRES_PASSWORD: strongpassword
volumes:
- pg_data:/var/lib/postgresql/data
paperclip:
image: paperclip/paperclip:latest
container_name: paperclip
restart: unless-stopped
depends_on:
- db
ports:
- "8080:8080"
volumes:
- paperclip_data:/data
environment:
- PAPERCLIP_SECRET_KEY=your_random_secret
- PAPERCLIP_DB_HOST=db
- PAPERCLIP_DB_NAME=paperclip
- PAPERCLIP_DB_USER=paperclip
- PAPERCLIP_DB_PASSWORD=strongpassword
- PAPERCLIP_OCR_ENABLED=true
volumes:
paperclip_data:
pg_data:
ステップ7:Paperclipの起動
cd /opt/paperclip
docker compose up -d
コンテナの稼働確認:
docker compose ps
docker compose logs -f paperclip
ステップ8:ファイアウォールの設定
ufw allow OpenSSH
ufw allow 80
ufw allow 443
ufw enable
注:ポート8080は直接公開せず、CaddyやNginxを通じてHTTPSでプロキシする予定です。
ステップ9:HTTPSの設定(Caddyを使用)
apt install caddy -y
Caddy設定ファイルの編集:
nano /etc/caddy/Caddyfile
以下を貼り付け:
docs.yourdomain.com {
reverse_proxy localhost:8080
}
Caddyをリロード:
systemctl reload caddy
Caddyは自動的にLet’s Encryptの証明書を取得・設定します。
ステップ10:初回ログイン
https://yourdomain.com(またはドメインなしの場合はhttp://YOUR_VPS_IP:8080)にアクセス- 初期セットアップウィザードを完了 - 管理者メールとパスワードを設定
- 最初のドキュメントをアップロード
- スキャンしたファイルの全文検索のためにOCRを有効にする
ステップ11:バックアップの設定
DockerボリュームをローカルマシンまたはS3互換バケットにバックアップします:
# ローカルファイルにバックアップ
docker run --rm \
-v paperclip_data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/paperclip-backup-$(date +%Y%m%d).tar.gz /data
クラウンジョブとしてスケジュール:
crontab -e
# 以下を追加
0 3 * * * /opt/paperclip/backup.sh
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| コンテナがすぐに停止する | ログを確認: docker compose logs paperclip |
| OCRが動作しない | PAPERCLIP_OCR_ENABLED=trueになっているか、コンテナに十分なRAMが割り当てられているか確認 |
| UIにアクセスできない | ポート8080がブロックされていないか確認;docker compose psも確認 |
| ドキュメント処理が遅い | OCRはCPU負荷が高いため、必要に応じてvCPUを増やす |
VPSプロバイダの推奨情報はこちらや完全比較の詳細は selfhostvps.com をご参考ください。