Immich Drop:誰でも簡単に写真・動画をアップロードできるゼロログインWebアプリ

Web

概要

Immich Dropは、ユーザー登録やログインなしで写真や動画を簡単にアップロードできる小型のWebアプリケーションです。主にImmichというメディア管理サーバーと連携し、アップロードされたファイルを直接サーバーに送信します。使い方はシンプルで、Webページを開いてファイルをドラッグ&ドロップするだけ。アップロードの進捗はWebSocket経由でリアルタイムに表示され、重複ファイルの検知やEXIF情報を活用した撮影日時の保持も可能です。また、モバイルフレンドリーな設計で、外出先からの利用も快適。環境設定は.envファイルのみで完結し、Dockerイメージも用意されているため、導入や運用も容易です。

GitHub

リポジトリの統計情報

  • スター数: 36
  • フォーク数: 0
  • ウォッチャー数: 36
  • コミット数: 15
  • ファイル数: 10
  • メインの言語: Python

主な特徴

  • ゼロログインで誰でも手軽にアップロード可能
  • WebSocketによるリアルタイム進捗表示とキュー管理
  • ローカルSHA-1キャッシュとImmichサーバーの重複チェックで重複ファイルを防止
  • EXIFからオリジナル撮影日時を抽出し、ファイルの作成・更新日時を保持
  • モバイル対応でスマートフォンからの利用も快適
  • .envファイルのみで簡単設定、Docker環境にも対応

技術的なポイント

Immich DropはPythonで書かれたシンプルかつ機能性の高いWebアプリケーションです。最も特徴的なのは「ゼロログイン」設計で、ユーザーはアカウント登録や認証なしにアップロードできるため、招待や複雑な設定なしで誰でも気軽に利用できます。これを実現するため、サーバー側ではアップロードされたファイルを即座にImmichサーバーへ転送し、ユーザー管理は行いません。

アップロードの進捗状況はWebSocketを使ってクライアントにリアルタイムで通知されます。これによりユーザーはアップロード中のファイルが成功したのか、重複やエラーが発生したのかを即座に把握可能です。ファイルの重複検知は二段階で行われています。まずクライアントサイドでSHA-1のハッシュ値を計算し、ローカルキャッシュと照合。さらに、必要に応じてImmichサーバーに問い合わせて一括検査を行うことで、無駄なアップロードを防止します。

また、画像や動画のEXIFメタデータからオリジナルの撮影日時を抽出し、アップロード時のファイル作成日時・更新日時に反映します。これにより、アップロード後も正確な撮影日時情報が保持され、メディア管理の精度が向上します。モバイルフレンドリーなUIは、スマートフォンやタブレットからの利用を想定しており、直感的なドラッグ&ドロップ操作が可能です。

環境構築面では、設定を.envファイルに集約しており、余計な設定ファイルを使わずクリーンに管理できます。さらにDockerfileとdocker-compose.ymlが用意されているため、コンテナ環境での簡単なデプロイも実現。プライバシー面にも配慮しており、アップロードされたファイルは外部に漏れずImmichサーバーへ直接送信される設計です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .env.example: 環境変数の設定例を示したファイル
  • .gitignore: Git管理対象外のファイルを指定
  • Dockerfile: Dockerイメージ作成用の設定ファイル
  • LICENSE: ライセンス情報(MIT)
  • README.md: プロジェクトの概要と使い方を記載
  • app.py: アプリケーションのメインPythonスクリプト
  • requirements.txt: Python依存パッケージ一覧
  • static/: CSSやJavaScriptなどの静的ファイル
  • templates/: HTMLテンプレートファイル
  • docker-compose.yml: 複数コンテナ構成の定義ファイル

これらのファイル群は、シンプルかつ明確に分割されており、アプリケーションの起動から運用まで流れが掴みやすくなっています。Dockerを用いることで、依存関係の衝突や環境差異を気にせず動作させられるのも魅力です。

まとめ

ゼロログインで手軽に使える、Immichと連携したアップローダー。

リポジトリ情報: