Last translated: 26 Jun 2025

Translation Not Available Yet

This repository's README hasn't been translated yet. Once translated, it will be easier to read and understand in your native language (中文).

After translating, add the links to README so others can view it directly.

CloudPaste - オンラインクリップボード 📋

中文 | English

paste

Markdown編集とファイルアップロードをサポートしたCloudflareベースのオンラインクリップボード&ファイル共有サービス

Ask DeepWiki License GitHub Stars Powered by Cloudflare Docker Pulls

📸 デモ✨ 機能🚀 デプロイガイド🔧 技術スタック💻 開発📄 ライセンス

📸 デモ

✨ 機能

📝 Markdown編集と共有

  • 強力なエディタ: Vditor統合、GitHub風Markdown、数式、フローチャート、マインドマップなどをサポート
  • 安全な共有: コンテンツにアクセスパスワードを設定可能
  • 柔軟な有効期限: コンテンツの有効期限設定をサポート
  • アクセス制御: 最大閲覧回数の制限が可能
  • カスタマイズ: 個別の共有リンクとメモ
  • Rawテキスト直リンク対応: GitHubのRaw直リンクと同様、YAML設定ファイル経由で起動するサービス向け
  • マルチフォーマット出力: PDF、Markdown、HTML、PNG画像、Word文書へのエクスポートをサポート
  • 簡単共有: ワンクリックでリンクコピーとQRコード生成
  • 自動保存: ドラフトの自動保存をサポート

📤 ファイルアップロードと管理

  • 複数ストレージ対応: 各種S3ストレージサービス(Cloudflare R2、Backblaze B2、AWS S3など)と互換
  • ストレージ設定: 複数ストレージスペースの視覚的インターフェース設定、デフォルトストレージソースの柔軟な切り替え
  • 効率的なアップロード: プリサインドURL経由でS3ストレージに直接アップロード
  • リアルタイムフィードバック: アップロード進捗のリアルタイム表示
  • カスタム制限: 単一アップロード制限と最大容量制限
  • メタデータ管理: ファイルメモ、パスワード、有効期限、アクセス制限
  • データ分析: ファイルアクセス統計と傾向分析
  • 直接サーバー転送: ファイルアップロード、ダウンロードなどの操作をAPI呼び出しでサポート

🛠 便利なファイル/テキスト操作

  • 一元管理: ファイル/テキストの作成、削除、プロパティ変更をサポート
  • オンラインプレビュー: 一般的なドキュメント、画像、メディアファイルのオンラインプレビューと直リンク生成
  • 共有ツール: クロスプラットフォーム共有のための短縮URLとQRコード生成
  • バッチ管理: ファイル/テキストの一括操作と表示

🔄 WebDAVとマウントポイント管理

  • WebDAVプロトコル対応: 標準WebDAVプロトコル経由でファイルシステムにアクセス・管理
  • ネットワークドライブマウント: 一部サードパーティクライアントによるマウントをサポート
  • 柔軟なマウントポイント: 異なるストレージサービスに接続する複数マウントポイントの作成をサポート
  • 権限制御: きめ細かいマウントポイントアクセス権限管理
  • APIキー統合: APIキーによるWebDAVアクセス認可
  • 大容量ファイルサポート: 大容量ファイルには自動的にマルチパートアップロードメカニズムを使用
  • ディレクトリ操作: ディレクトリ作成、アップロード、削除、名前変更などの操作を完全サポート

🔐 軽量権限管理

管理者権限制御

  • システム管理: グローバルシステム設定構成
  • コンテンツモデレーション: 全ユーザーコンテンツの管理
  • ストレージ管理: S3ストレージサービスの追加、編集、削除
  • 権限割り当て: APIキーの作成と権限管理
  • データ分析: 統計データへの完全アクセス

APIキー権限制御

  • テキスト権限: テキストコンテンツの作成/編集/削除
  • ファイル権限: ファイルのアップロード/管理/削除
  • ストレージ権限: 特定のストレージ構成を選択可能
  • 読み書き分離: 読み取り専用または読み書き権限を設定可能
  • 時間制御: カスタム有効期間(時間単位から月単位まで)
  • セキュリティメカニズム: 自動失効と手動取り消し機能

💫 システム機能

  • 高適応性: レスポンシブデザイン、モバイルデバイスとデスクトップに対応
  • 多言語対応: 中国語/英語の二か国語インターフェースサポート
  • 視覚モード: 明るい/暗いテーマ切り替え
  • 安全な認証: JWTベースの管理者認証システム
  • オフライン体験: PWAサポート、オフライン使用とデスクトップインストールが可能

🚀 デプロイガイド

前提条件

デプロイを開始する前に、以下を準備してください:

  • Cloudflareアカウント(必須)
  • R2を使用する場合: Cloudflare R2サービスを有効化し、バケットを作成(支払い方法が必要)
  • Vercelを使用する場合: Vercelアカウントに登録
  • その他のS3ストレージサービスの設定情報:
    • S3_ACCESS_KEY_ID
    • S3_SECRET_ACCESS_KEY
    • S3_BUCKET_NAME
    • S3_ENDPOINT
👉 完全なデプロイガイドを表示

📑 目次


Action自動デプロイ

GitHub Actionsを使用すると、コードプッシュ後にアプリケーションを自動的にデプロイできます。

GitHubリポジトリの設定

  1. リポジトリをフォークまたはクローン https://github.com/ling-drag0n/CloudPaste
  2. GitHubリポジトリ設定に移動
  3. Settings → Secrets and variables → Actions → New Repository secretsに移動
  4. 以下のSecretsを追加:
Secret名必須目的
CLOUDFLARE_API_TOKENCloudflare APIトークン(Workers、D1、Pages権限が必要)
CLOUDFLARE_ACCOUNT_IDCloudflareアカウントID
ENCRYPTION_SECRET機密データ暗号化キー(提供されない場合、自動生成)

Cloudflare APIトークンの取得

  1. Cloudflareダッシュボードにアクセス

  2. 新しいAPIトークンを作成

  3. "Edit Cloudflare Workers"テンプレートを選択し、D1データベース編集権限を追加

    D1

バックエンド自動デプロイ

リポジトリをフォークし、secretsを入力後、ワークフローを実行!!! backendディレクトリ内のファイルが変更され、mainまたはmasterブランチにプッシュされると、デプロイが自動的にトリガーされます。ワークフローは以下のように進行します:

  1. D1データベースを自動的に作成(存在しない場合)
  2. schema.sqlでデータベースを初期化(テーブルと初期データを作成)
  3. ENCRYPTION_SECRET環境変数を設定(GitHub Secretsから取得または自動生成)
  4. WorkerをCloudflareに自動デプロイ
  5. 元のCloudflareドメインを置き換えるカスタムドメインを設定することを推奨(特定の地域ではアクセスできない可能性があるため)

⚠️ バックエンドドメイン名を覚えておいてください

フロントエンド自動デプロイ

Cloudflare Pages(推奨)

リポジトリをフォークし、secretsを入力後、ワークフローを実行。 frontendディレクトリ内のファイルが変更され、mainまたはmasterブランチにプッシュされると、デプロイが自動的にトリガーされます。デプロイ後、Cloudflare Pagesコントロールパネルで環境変数を設定する必要があります:

  1. Cloudflareダッシュボードにログイン

  2. Pages → プロジェクト(例: "cloudpaste-frontend")に移動

  3. "Settings" → "Environment variables"をクリック

  4. 環境変数を追加:

    • 名前: VITE_BACKEND_URL

    • 値: バックエンドWorker URL(例: https://cloudpaste-backend.your-username.workers.dev)末尾の"/"なし。カスタムWorkerバックエンドドメインの使用を推奨。

    • 必ず完全なバックエンドドメイン名を"https://xxxx.com"形式で入力してください

  5. 重要なステップ: その後、フロントエンドワークフローを再度実行し、バックエンドドメインの読み込みを完了!!!

    test-1

手順を厳密に守ってください、そうしないとバックエンドドメインの読み込みに失敗します

Vercel

Vercelの場合、以下のようにデプロイすることを推奨:

  1. フォーク後、GitHubプロジェクトをインポート
  2. デプロイパラメータを設定:
Framework Preset: Vite
Build Command: npm run build
Output Directory: dist
Install Command: npm install
  1. 以下の環境変数を設定: VITE_BACKEND_URLとバックエンドドメインを入力
  2. "Deploy"ボタンをクリックしてデプロイ

☝️ 上記の方法のいずれかを選択


手動デプロイ

バックエンド手動デプロイ

  1. リポジトリをクローン
git clone https://github.com/ling-drag0n/CloudPaste.git
cd CloudPaste/backend
  1. 依存関係をインストール

    npm install
    
  2. Cloudflareにログイン

    npx wrangler login
    
  3. D1データベースを作成

    npx wrangler d1 create cloudpaste-db
    

    出力からデータベースIDをメモ。

  4. wrangler.toml設定を修正

    [[d1_databases]]
    binding = "DB"
    database_name = "cloudpaste-db"
    database_id = "YOUR_DATABASE_ID"
    
  5. Workerをデプロイ

    npx wrangler deploy
    

    出力からURLをメモ; これがバックエンドAPIアドレス。

  6. データベースを初期化(自動) Worker URLにアクセスして初期化をトリガー:

    https://cloudpaste-backend.your-username.workers.dev
    

⚠️ セキュリティリマインダー: システム初期化後、すぐにデフォルト管理者パスワードを変更してください(ユーザー名: admin、パスワード: admin123)。

フロントエンド手動デプロイ

Cloudflare Pages

  1. フロントエンドコードを準備

    cd CloudPaste/frontend
    npm install
    
  2. 環境変数を設定 .env.productionファイルを作成または修正:

    VITE_BACKEND_URL=https://cloudpaste-backend.your-username.workers.dev
    VITE_APP_ENV=production
    VITE_ENABLE_DEVTOOLS=false
    
  3. フロントエンドプロジェクトをビルド

    npm run build
    

    ビルド時は注意! !

  4. Cloudflare Pagesにデプロイ

    方法1: Wrangler CLI経由

    npx wrangler pages deploy dist --project-name=cloudpaste-frontend
    

    方法2: Cloudflareダッシュボード経由

    1. Cloudflareダッシュボードにログイン
    2. "Pages"を選択
    3. "Create a project" → "Direct Upload"をクリック
    4. distディレクトリからファイルをアップロード
    5. プロジェクト名を設定(例: "cloudpaste-frontend")
    6. "Save and Deploy"をクリック

Vercel

  1. フロントエンドコードを準備

    cd CloudPaste/frontend
    npm install
    
  2. Vercel CLIをインストールしてログイン

    npm install -g vercel
    vercel login
    
  3. 環境変数を設定、Cloudflare Pagesと同じ

  4. ビルドしてデプロイ

    vercel --prod
    

    プロンプトに従ってプロジェクトを設定。


ClawCloud CloudPasteデプロイチュートリアル

月間10GB無料トラフィック、軽量使用のみに適しています

ステップ1:

登録リンク: Claw Cloud(#AFFなし) クレジットカード不要、GitHub登録日が180日以上であれば、毎月$5クレジットを獲得。

ステップ2:

登録後、ホームページでAPP Launchpadをクリックし、右上のcreate appをクリック

image.png

ステップ3:

まずバックエンドをデプロイ、図を参照(参考のみ): image.png

バックエンドデータストレージはこちら: image.png

ステップ4:

次にフロントエンド、図を参照(参考のみ): image.png

デプロイ完了、使用可能、必要に応じてカスタムドメインを設定
👉 Dockerデプロイガイド

📑 目次


Dockerコマンドラインデプロイ

バックエンドDockerデプロイ

CloudPasteバックエンドは公式Dockerイメージで迅速にデプロイ可能。

  1. データストレージディレクトリを作成

    mkdir -p sql_data
    
  2. バックエンドコンテナを実行

    docker run -d --name cloudpaste-backend \
      -p 8787:8787 \
      -v $(pwd)/sql_data:/data \
      -e ENCRYPTION_SECRET=your-encryption-key \
      -e NODE_ENV=production \
      -e RUNTIME_ENV=docker \
      dragon730/cloudpaste-backend:latest
    

    デプロイURL(例: http://your-server-ip:8787)をメモ、フロントエンドデプロイ時に必要。

⚠️ セキュリティヒント: ENCRYPTION_SECRETをカスタマイズし、安全に保管してください。このキーは機密データの暗号化に使用されます。

フロントエンドDockerデプロイ

フロントエンドはNginxを使用してサービスを提供し、起動時にバックエンドAPIアドレスを設定。

docker run -d --name cloudpaste-frontend \
  -p 80:80 \
  -e BACKEND_URL=http://your-server-ip:8787 \
  dragon730/cloudpaste-frontend:latest

⚠️ 注意: BACKEND_URLには完全なURL(プロトコルhttp://またはhttps://を含む)を含める必要があります ⚠️ セキュリティリマインダー: システム初期化後、すぐにデフォルト管理者パスワードを変更してください(ユーザー名: admin、パスワード: admin123)。

Dockerイメージ更新

プロジェクトの新しいバージョンがリリースされた場合、以下の手順でDockerデプロイを更新:

  1. 最新イメージをプル

    docker pull dragon730/cloudpaste-backend:latest
    docker pull dragon730/cloudpaste-frontend:latest
    
  2. 古いコンテナを停止して削除

    docker stop cloudpaste-backend cloudpaste-frontend
    docker rm cloudpaste-backend cloudpaste-frontend
    
  3. 上記と同じrunコマンドで新しいコンテナを起動(データディレクトリと設定を保持)

Docker Composeワンクリックデプロイ

Docker Composeを使用すると、フロントエンドとバックエンドサービスをワンクリックでデプロイ可能。最も簡単な推奨方法。

  1. docker-compose.ymlファイルを作成
version: "3.8"

services:
  frontend:
    image: dragon730/cloudpaste-frontend:latest
    environment:
      - BACKEND_URL=https://xxx.com # Fill in the backend service address
    ports:
      - "8080:80" #"127.0.0.1:8080:80"
    depends_on:
      - backend # Depends on backend service
    networks:
      - cloudpaste-network
    restart: unless-stopped

  backend:
    image: dragon730/cloudpaste-backend:latest
    environment:
      - NODE_ENV=production
      - RUNTIME_ENV=docker
      - PORT=8787
      - ENCRYPTION_SECRET=custom-key # Please modify this to your own security key
    volumes:
      - ./sql_data:/data # Data persistence
    ports:
      - "8787:8787" #"127.0.0.1:8787:8787"
    networks:
      - cloudpaste-network
    restart: unless-stopped

networks:
  cloudpaste-network:
    driver: bridge
  1. サービスを開始
docker-compose up -d

⚠️ セキュリティリマインダー: システム初期化後、すぐにデフォルト管理者パスワードを変更してください(ユーザー名: admin、パスワード: admin123)。

  1. サービスにアクセス

フロントエンド: http://your-server-ip:80 バックエンド: http://your-server-ip:8787

Docker Compose更新

新しいバージョンに更新する必要がある場合:

  1. 最新イメージをプル

    docker-compose pull
    
  2. 新しいイメージを使用してコンテナを再作成(データボリュームを保持)

    docker-compose up -d --force-recreate
    

💡 ヒント: 設定変更がある場合、データをバックアップし、docker-compose.ymlファイルを修正する必要があるかもしれません

Nginxリバースプロキシ例

server {
    listen 443 ssl;
    server_name paste.yourdomain.com;  # Replace with your domain name

    # SSL certificate configuration
    ssl_certificate     /path/to/cert.pem;  # Replace with certificate path
    ssl_certificate_key /path/to/key.pem;   # Replace with key path

    # Frontend proxy configuration
    location / {
        proxy_pass http://localhost:80;  # Docker frontend service address
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # Backend API proxy configuration
    location /api {
        proxy_pass http://localhost:8787;  # Docker backend service address
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        client_max_body_size 0;

        # WebSocket support (if needed)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    # WebDAV Configuration
    location /dav {
        proxy_pass http://localhost:8787/dav;  # Points to your backend service

        # WebDAV necessary headers
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # WebDAV method support
        proxy_pass_request_headers on;

        # Support all WebDAV methods
        proxy_method $request_method;

        # Necessary header processing
        proxy_set_header Destination $http_destination;
        proxy_set_header Overwrite $http_overwrite;

        # Handle large files
        client_max_body_size 0;

        # Timeout settings
        proxy_connect_timeout 3600s;
        proxy_send_timeout 3600s;
        proxy_read_timeout 3600s;
    }
}

⚠️ セキュリティヒント: セキュリティ強化のため、HTTPSとリバースプロキシ(Nginxなど)の設定を推奨。

👉 S3クロスオリジン設定ガイド

R2 APIの取得とクロスオリジン設定

  1. Cloudflareダッシュボードにログイン

  2. R2ストレージをクリックし、バケットを作成

  3. APIトークンを作成 R2api R2rw

  4. 作成後、すべてのデータを保存(後で必要になります)

  5. クロスオリジンルールを設定:対応するバケットをクリックし、設定→CORSポリシーを以下のように編集

[
  {
    "AllowedOrigins": ["http://localhost:3000", "https://replace-with-your-frontend-domain"],
    "AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
    "AllowedHeaders": ["*"],
    "ExposeHeaders": ["ETag"],
    "MaxAgeSeconds": 3600
  }
]

B2 APIの取得とクロスオリジン設定

  1. B2アカウントをお持ちでない場合、まず登録してからバケットを作成 B2アカウント登録

  2. サイドバーでApplication Keyをクリック、Create Keyをクリックし、図示に従って設定 B2key

  3. B2クロスオリジンを設定(B2のクロスオリジン設定は複雑なので注意) B2cors

  4. まずオプション1または2を試し、アップロードページでアップロード可能か確認。F12コンソールにクロスオリジンエラーが表示される場合はオプション3を使用。恒久的な解決策として直接オプション3を使用することも可能

    B21

オプション3の設定について、パネルでは設定できないため、B2 CLIツールをダウンロードして手動で設定する必要があります。詳細は「https://docs.cloudreve.org/zh/usage/storage/b2」を参照してください。

ダウンロード後、対応するダウンロードディレクトリでCMDを開き、以下のコマンドを入力:

b2-windows.exe account authorize   //Log in to your account, following prompts to enter your keyID and applicationKey
b2-windows.exe bucket get <bucketName> //You can execute to get bucket information, replace <bucketName> with your bucket name

Windows設定では「.\b2-windows.exe xxx」を使用、 Python CLIも同様:

b2-windows.exe bucket update <bucketName> allPrivate --cors-rules "[{\"corsRuleName\":\"CloudPaste\",\"allowedOrigins\":[\"*\"],\"allowedHeaders\":[\"*\"],\"allowedOperations\":[\"b2_upload_file\",\"b2_download_file_by_name\",\"b2_download_file_by_id\",\"s3_head\",\"s3_get\",\"s3_put\",\"s3_post\",\"s3_delete\"],\"exposeHeaders\":[\"Etag\",\"content-length\",\"content-type\",\"x-bz-content-sha1\"],\"maxAgeSeconds\":3600}]"

をバケット名に置き換えてください。クロスオリジン許可のallowedOriginsは必要に応じて設定可能(ここではすべてを許可しています)。

  1. クロスオリジン設定完了

MinIO APIアクセスとクロスオリジン設定

  1. MinIOサーバーのデプロイ

    以下のDocker Compose設定(参考)を使用してMinIOを迅速にデプロイ:

    version: "3"
    
    services:
      minio:
        image: minio/minio:RELEASE.2025-02-18T16-25-55Z
        container_name: minio-server
        command: server /data --console-address :9001 --address :9000
        environment:
          - MINIO_ROOT_USER=minioadmin # 管理者ユーザー名
          - MINIO_ROOT_PASSWORD=minioadmin # 管理者パスワード
          - MINIO_BROWSER=on
          - MINIO_SERVER_URL=https://minio.example.com # S3 APIアクセスURL
          - MINIO_BROWSER_REDIRECT_URL=https://console.example.com # コンソールアクセスURL
        ports:
          - "9000:9000" # S3 APIポート
          - "9001:9001" # コンソールポート
        volumes:
          - ./data:/data
          - ./certs:/root/.minio/certs # SSL証明書(必要な場合)
        restart: always
    

    docker-compose up -dを実行してサービスを開始。

  2. リバースプロキシ設定(参考)

    MinIOが正常に機能するため、特にファイルプレビューについては、リバースプロキシを適切に設定する必要があります。推奨されるOpenResty/Nginx設定:

    MinIO S3 APIリバースプロキシ(minio.example.com):

    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    
        # HTTP最適化
        proxy_http_version 1.1;
        proxy_set_header Connection "";  # HTTP/1.1 keepaliveを有効化
    
        # 重要:403エラー&プレビュー問題の解決
        proxy_cache off;
        proxy_buffering off;
        proxy_request_buffering off;
    
        # ファイルサイズ制限なし
        client_max_body_size 0;
    }
    

    MinIOコンソールリバースプロキシ(console.example.com):

    location / {
        proxy_pass http://127.0.0.1:9001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    
        # WebSocketサポート
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    
        # 重要設定
        proxy_cache off;
        proxy_buffering off;
    
        # ファイルサイズ制限なし
        client_max_body_size 0;
    }
    
  3. コンソールにアクセスしてバケット&アクセスキーを作成

    詳細設定については公式ドキュメントを参照:
    https://min.io/docs/minio/container/index.html
    CN: https://min-io.cn/docs/minio/container/index.html

    minio-1

  4. 追加設定(オプション)

    許可されたオリジンにはフロントエンドドメインを含める必要があります。
    minio-2

  5. CloudPasteでMinIOを設定

    • CloudPaste管理パネルにログイン
    • 「S3ストレージ設定」→「ストレージ設定を追加」に移動
    • プロバイダーとして「その他のS3互換サービス」を選択
    • 詳細を入力:
      • 名前:カスタム名
      • エンドポイントURL:MinIOサービスURL(例:https://minio.example.com
      • バケット名:事前に作成したバケット
      • アクセスキーID:アクセスキー
      • シークレットキー:シークレットキー
      • リージョン:空のまま
      • パススタイルアクセス:必ず有効化!
    • 「接続テスト」をクリックして確認
    • 設定を保存
  6. トラブルシューティング

    • 注意:CloudflareのCDNを使用している場合、proxy_set_header Accept-Encoding "identity"を追加する必要がある場合があり、キャッシュ問題も考慮する必要があります。DNS解決のみを使用することを推奨します。
    • 403エラー:リバースプロキシにproxy_cache offproxy_buffering offが含まれていることを確認
    • プレビュー問題MINIO_SERVER_URLMINIO_BROWSER_REDIRECT_URLが正しく設定されていることを確認
    • アップロード失敗:CORS設定を確認。許可されたオリジンにフロントエンドドメインを含める必要があります
    • コンソールにアクセス不可:WebSocket設定、特にConnection "upgrade"を確認

その他のS3関連設定は近日公開......

👉 WebDAV設定ガイド

WebDAV設定と使用ガイド

CloudPasteはシンプルなWebDAVプロトコルサポートを提供し、ストレージスペースをネットワークドライブとしてマウントし、ファイルマネージャーを通じて直接ファイルにアクセス・管理できます。

WebDAVサービス基本情報

  • WebDAVベースURL: https://your-backend-domain/dav
  • サポート認証方法:
    • 基本認証(ユーザー名+パスワード)
  • サポート権限タイプ:
    • 管理者アカウント - 完全操作権限
    • APIキー - マウント権限(mount_permission)が有効である必要があります

権限設定

1. 管理者アカウントアクセス

管理者アカウントとパスワードで直接WebDAVサービスにアクセス:

  • ユーザー名: 管理者ユーザー名
  • パスワード: 管理者パスワード

2. APIキーアクセス(推奨)

より安全なアクセス方法として、専用のAPIキーを作成:

  1. 管理インターフェースにログイン
  2. 「APIキー管理」に移動
  3. 新しいAPIキーを作成、「マウント権限」が有効であることを確認
  4. 使用方法:
    • ユーザー名: APIキー値
    • パスワード: ユーザー名と同じAPIキー値

NGINXリバースプロキシ設定

NGINXをリバースプロキシとして使用する場合、すべてのWebDAVメソッドが正しく機能するように特定のWebDAV設定を追加する必要があります:

# WebDAV Configuration
location /dav {
    proxy_pass http://localhost:8787;  # Points to your backend service

    # WebDAV necessary headers
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # WebDAV method support
    proxy_pass_request_headers on;

    # Support all WebDAV methods
    proxy_method $request_method;

    # Necessary header processing
    proxy_set_header Destination $http_destination;
    proxy_set_header Overwrite $http_overwrite;

    # Handle large files
    client_max_body_size 0;

    # Timeout settings
    proxy_connect_timeout 3600s;
    proxy_send_timeout 3600s;
    proxy_read_timeout 3600s;
}

よくある問題と解決策

  1. 接続問題:

    • WebDAV URL形式が正しいことを確認
    • 認証情報が有効であることを確認
    • APIキーにマウント権限があるか確認
  2. 権限エラー:

    • アカウントに必要な権限があることを確認
    • 管理者アカウントは完全な権限を持つ必要があります
    • APIキーはマウント権限が明示的に有効である必要があります
  3. ⚠️⚠️ WebDAVアップロード問題:

    • 署名付きアップロードモードでは、対応するS3ストレージのクロスオリジン設定に注意が必要
    • WebDAVの自動推奨モードでは、10MB未満のファイルは直接アップロードモード、10-50MBのファイルはマルチパートアップロードモード、50MB以上のファイルは署名付きアップロードモードを使用
    • Cloudflare Workerのアップロード制限については、署名付きまたは直接アップロードモードを使用し、マルチパートアップロードは避けることを推奨
    • Dockerデプロイでは、nginxプロキシ設定に注意すれば、どのアップロードモードも問題ありません
    • Windows、Raidriveなどのクライアントはまだドラッグ&ドロップアップロードをサポートしていませんが、それ以外はすべて機能します

🔧 技術スタック

フロントエンド

  • フレームワーク: Vue.js 3 + Vite
  • スタイリング: TailwindCSS
  • エディター: Vditor
  • 国際化: Vue-i18n
  • チャート: Chart.js + Vue-chartjs

バックエンド

  • ランタイム: Cloudflare Workers
  • フレームワーク: Hono
  • データベース: Cloudflare D1 (SQLite)
  • ストレージ: 複数のS3互換サービス(R2、B2、AWS S3をサポート)
  • 認証: JWTトークン + APIキー

💻 開発

APIドキュメント

APIドキュメント

サーバー直接ファイルアップロードAPIドキュメント - サーバー直接ファイルアップロードインターフェースの詳細説明

ローカル開発環境設定

  1. プロジェクトリポジトリをクローン

    git clone https://github.com/ling-drag0n/cloudpaste.git
    cd cloudpaste
    
  2. バックエンド設定

    cd backend
    npm install
    # D1データベースを初期化
    wrangler d1 create cloudpaste-db
    wrangler d1 execute cloudpaste-db --file=./schema.sql
    
  3. フロントエンド設定

    cd frontend
    npm install
    
  4. 環境変数を設定

    • backendディレクトリでwrangler.tomlファイルを作成し、開発環境変数を設定
    • frontendディレクトリで.env.developmentファイルを設定し、フロントエンド環境変数を設定
  5. 開発サーバーを起動

    # バックエンド
    cd backend
    npm run dev
    
    # フロントエンド(別のターミナルで)
    cd frontend
    npm run dev
    

プロジェクト構造

CloudPaste/
├── frontend/                # Frontend Vue.js application
│   ├── src/                 # Source code
│   │   ├── components/      # Vue components
│   │   ├── api/             # API clients and services
│   │   ├── i18n/            # Internationalization resource files
│   │   ├── utils/           # Utility functions
│   │   └── assets/          # Static assets
│   └── ...
└── backend/                 # Cloudflare Workers backend
    ├── worker.js            # Main Worker file
    ├── schema.sql           # D1 database schema
    └── ...

カスタムDockerビルド

Dockerイメージをカスタマイズしたり、開発中にデバッグしたりする場合は、以下の手順で手動でビルドできます:

  1. バックエンドイメージをビルド

    # プロジェクトルートディレクトリで実行
    docker build -t cloudpaste-backend:custom -f docker/backend/Dockerfile .
    
    # カスタムビルドイメージを実行
    docker run -d --name cloudpaste-backend \
      -p 8787:8787 \
      -v $(pwd)/sql_data:/data \
      -e ENCRYPTION_SECRET=development-test-key \
      cloudpaste-backend:custom
    
  2. フロントエンドイメージをビルド

    # プロジェクトルートディレクトリで実行
    docker build -t cloudpaste-frontend:custom -f docker/frontend/Dockerfile .
    
    # カスタムビルドイメージを実行
    docker run -d --name cloudpaste-frontend \
      -p 80:80 \
      -e BACKEND_URL=http://localhost:8787 \
      cloudpaste-frontend:custom
    
  3. 開発環境Docker Compose

    docker-compose.dev.ymlファイルを作成:

    version: "3.8"
    
    services:
      frontend:
        build:
          context: .
          dockerfile: docker/frontend/Dockerfile
        environment:
          - BACKEND_URL=http://backend:8787
        ports:
          - "80:80"
        depends_on:
          - backend
    
      backend:
        build:
          context: .
          dockerfile: docker/backend/Dockerfile
        environment:
          - NODE_ENV=development
          - RUNTIME_ENV=docker
          - PORT=8787
          - ENCRYPTION_SECRET=dev_secret_key
        volumes:
          - ./sql_data:/data
        ports:
          - "8787:8787"
    

    開発環境を起動:

    docker-compose -f docker-compose.yml up --build
    

📄 ライセンス

Apache License 2.0

このプロジェクトはApache License 2.0でライセンスされています - 詳細はLICENSEファイルを参照してください。

❤️ 貢献

  • スポンサーシップ: プロジェクトの維持は簡単ではありません。このプロジェクトが気に入ったら、作者に少しの励ましを検討してください。あなたのサポートは私が続ける原動力です~

スター履歴

Star History Chart

プロジェクトが良いと思ったら、無料のスター✨✨をいただけると嬉しいです。どうもありがとうございます!